LoginSignup
35
28

More than 5 years have passed since last update.

Mysql2::Error: Table ~~ already existsの解決法

Last updated at Posted at 2014-08-11

※抜本的な解決方法ではないと思うので悪しからず。
Add_columnしたく、migrationをかけたら、以下のようなエラーが発生しました。

==  CreateHoge: migrating ============================================
-- create_table(:hoge)
rake aborted!
An error has occurred, all later migrations canceled:

Mysql2::Error: Table 'hoge' already exists: CREATE TABLE `hoge` (`id` int(11) DEFAULT NULL auto_increment PRIMARY KEY, `hoge_id` int(11), `date` date, `created_at` datetime NOT NULL, `updated_at` datetime NOT NULL) ENGINE=InnoDB

ようは、migrationするときに、hogeテーブルを作成しようしたのだが、既にhogeテーブルあるよ!って起こられてるみたいです。

おそらく、hogeテーブルをmigrationかけずに作成してしまったのか?
よく原因が分からず、rollbackしてもdropされず。。。

やむを得ず、コンソール上で直接ActiveRecord::Migration.drop_table(:hoge)を叩いて、hogeテーブルを削除。

そして、Migrationかけると、、、

==  CreateHoge: migrating ============================================
-- create_table(:Hoge)
   -> 0.2134s
==  CreateHoge: migrated (0.2137s) ===================================

==  AddHugaToHoge: migrating ===========================
-- add_column(:hoge, :huga, :integer)
   -> 0.1057s
==  AddHugaToHoge: migrated (0.1058s) ==================

問題なくMigration出来ました。

※やる前はちゃんとバックアップをとって置きましょう。
・テーブルごとにバックアップをとるコマンド
mysqldump -u ユーザー名 -p -t データベース名 テーブル1 テーブル2 ... > ダンプファイル名
・復元するコマンド
mysql -u ユーザ名 -p データベース名 < ダンプファイル名

35
28
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
35
28