0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【エラー解決】Tablespace '`データベース名`.`***`' exists

Posted at

#エラーの内容#
laravelのmigrate:freshを実行するとエラーが出てしまって、どうにもこうにも行かなくなってしまいました。
エラー文には、テーブルはすでに存在しています、と書かれています。

 SQLSTATE[HY000]: General error: 1813 Tablespace '`データベース名`.`***`' exists. (SQL: create table `***` (`id` bigint unsigned not null auto_increment primary key, `user_id` bigint unsigned not null, `post_id` bigint unsigned not null, `created_at` timestamp not null default CURRENT_TIMESTAMP, `updated_at` timestamp not null default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP) default character set utf8mb4 collate 'utf8mb4_unicode_ci')

  at vendor/laravel/framework/src/Illuminate/Database/Connection.php:703
    699▕         // If an exception occurs when attempting to run a query, we'll format the error
    700▕         // message to include the bindings with SQL, which will make this exception a
    701▕         // lot more helpful to the developer instead of just the database's errors.
    702▕         catch (Exception $e) {
  ➜ 703▕             throw new QueryException(
    704▕                 $query, $this->prepareBindings($bindings), $e
    705▕             );
    706▕         }
    707▕     }

      +9 vendor frames
  10  database/migrations/2021_10_17_092414_create_***_table.php:22
      Illuminate\Support\Facades\Facade::__callStatic("create")

      +21 vendor frames
  32  artisan:37
      Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))

 
#原因と解決策#
色々調べてみると、docker imageに、前回使用したテーブルのデータが残ったまま次のコンテナを立ち上げてしまっている?のが原因のようでした。
それでは、そのデータを削除して新しく作り直せばなんとかなりそうです。

まずはdocker psでコンテナを確認します。

docker ps
CONTAINER ID   IMAGE                 COMMAND                  CREATED        STATUS        PORTS                                                                                                                                                                                                                                   NAMES
f730a8dd9173   laradock_nginx        "/docker-entrypoint.…"   36 hours ago   Up 36 hours   0.0.0.0:80-81->80-81/tcp, :::80-81->80-81/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp                                                                                                                                                    laradock_nginx_1
b013ed71a52c   laradock_php-fpm      "docker-php-entrypoi…"   36 hours ago   Up 36 hours   9000/tcp, 0.0.0.0:9003->9003/tcp, :::9003->9003/tcp                                                                                                                                                                                     laradock_php-fpm_1
9a0bbf127ce6   laradock_workspace    "/sbin/my_init"          36 hours ago   Up 36 hours   0.0.0.0:3000-3001->3000-3001/tcp, :::3000-3001->3000-3001/tcp, 0.0.0.0:4200->4200/tcp, :::4200->4200/tcp, 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:2222->22/tcp, :::2222->22/tcp, 0.0.0.0:8001->8000/tcp, :::8001->8000/tcp   laradock_workspace_1
40445bdf8134   laradock_phpmyadmin   "/docker-entrypoint.…"   36 hours ago   Up 36 hours   0.0.0.0:8081->80/tcp, :::8081->80/tcp                                                                                                                                                                                                   laradock_phpmyadmin_1
740a1ed511d8   docker:19.03-dind     "dockerd-entrypoint.…"   36 hours ago   Up 36 hours   2375-2376/tcp                                                                                                                                                                                                                           laradock_docker-in-docker_1
92eff8e390a2   laradock_mysql        "docker-entrypoint.s…"   36 hours ago   Up 36 hours   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp                                                                                                                                                                                    laradock_mysql_1

mysqlコンテナにbashでログインし、mysqlディレクトリに移動します。

docker exec -it 92eff8e390a2 /bin/bash
cd /var/lib/mysql

原因のファイルを削除します。
データベース名のファイルがあるのでrmコマンドで削除して、新しいフォルダを作ります。

rm -rf データベース名/
mkdir データベース名

これで綺麗になりましたのでマイグレーションが実行できるようになりました!

#終わりに#
細かいところはまだまだ理解できてませんが、少しずつエラーと戦う力がついてきたような気がします。
脳死でググるのではなく、まずはエラー文をしっかり読み解く(英語なので分かりにくいですが・・・)ことが大事ですね!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?