はじめに
Mysql2::Error: Table '' already exists
というエラーが発生した際、調べたらそれなりに対処法は出てきたのですが、db:migrate:reset
すれば解決と言っているものが多かったです。
しかしDBをリセットしたくない状況の時に困りそうだったので、リセットせずに解決できる方法を調べました。
DBから直接テーブルを削除する
エラーの対象となっているテーブルがダブっていることが原因なので、DBから削除すれば解決できます。
まずDBにログインします。パスワードを設定していれば打ち込んでログインしてください。
ターミナル
$ bin/rails db
mysql>
次にテーブルを参照します。
ターミナル
mysql> SHOW TABLE;
+-----------------------------+
| Tables_in_myapp_development |
+-----------------------------+
| ar_internal_metadata |
| relationships |
| schema_migrations |
| tasks |
| users |
+-----------------------------+
5 rows in set (0.00 sec)
私の場合はrelationshipsテーブルでエラーが発生したので削除します。
ターミナル
mysql> drop table relationships;
Query OK, 0 rows affected (0.03 sec)
そしてもう一度マイグレートすれば上手くいきました。
ターミナル
$ bin/rails db:migrate
参考