0

30分前に、私はMySQLとデータベースに行ってRoRで使用しました。それから私はschema_migrationに行って、私はこの仕事をした後便利な削除後のschema_migrationの状況

DELETE FROM schema_migration WHERE version=20120110152044; 

を入力し、私はrake db:migrateを入力し、私はいくつかの分前に削除移行が再びschema_migrationに追加されることを期待するが、私はこのメッセージに直面します。

"MySQL2 :: ERRORテーブル 'football_leagues' は既に存在して...." 誰かが私にこのメッセージの理由を教えてください。

答えて

-1

私はひいきにしたくないですが、football_leaguesという名前のテーブルが既に存在する場合に作成しようとしているからです。 rake db:drop db:migrateを実行してテーブル(およびデータベース内の他のテーブル)を削除し、移行を再実行します。 あなたはそのデータベースのすべてのデータを失います。 upまたはchange方法で

create_table :football_leagues do |t| 
    #... 

+0

この移行のバージョンをschema_migrationに挿入するにはどうすればよいですか? –

+0

あなたは、OPが単一のテーブルを修正するためだけにデータベース全体を削除することを本当に提案していますか?あなたは狂人か悪意のある人ですか? –

+0

@muistooshort彼は明らかに彼のデータベースを直接遊んで彼のマイグレーションを台無しにしました。私はそれがデータ損失を引き起こすとはっきりしていました。私が言ったことをすることは、それがどのように元に戻すでしょう。 – Gazler

1

あなた20120110152044移行はおそらくのようなものでfootball_leaguesテーブルを作成します。 schema_migrationsテーブルからエントリを削除しても、移行はロールバックされません。実行された移行のレコードが変更されます。あなたは、おそらくバックのMySQLに行くと手でfootball_leaguesテーブルを削除する必要があります。

mysql> drop table football_leagues; 

あなたの周りfootball_leaguesを維持する必要がある場合、あなたは再びfootball_leaguesを作成しようとしないし、あなたの移行を変更する必要があります。

あなたは代わりに、あなたがやっている内容を正確に把握することを特定している場合schema_migrationsにのみ行われるべきで編集し、手でschema_migrationsを編集しようとしているの移行をロールバックするrake db:rollbackを使用することができます。

関連する問題