2

データベースのテーブルに新しい列を追加するために Rails データベースの移行を作成しましたが、予想よりもはるかに時間がかかっていることに気付き (15 分以上)、移行を実行している ruby​​ プロセスを手動で強制終了しました。その後、テーブルのデータ量のせいでランタイムが異常ではないことに気付き、もう一度開始してみました。今、私はエラーが発生します:

Mysql::Error: Duplicate column name 'new_column': ALTER TABLE `table_name` ADD `new_column` varchar(255)

ただし、手動で MySQL にアクセスするdesc table_nameと、列が存在しないことが示され、手動でドロップしようとすると ( alter table table_name drop new_column) 、次のように表示されます。

ERROR 1091 (42000): Can't DROP 'new_column'; check that column/key exists

最初の追加プロセスを中止すると、一貫性のない状態になったようです。これを解決するにはどうすればよいですか?

編集:手動で追加(上記のエラーからDDLを正確にコピー)してから、MySQLプロンプトで列を削除しようとしましたが、両方とも正常に機能しましたが、rake db:migrate引き続き上記のエラーが発生します。

4

2 に答える 2

0

It looks like I was accidentally running the manual MySQL commands against the wrong database (I wasn't switching to the "development" version of the database). Using the correct database, I was able to manually remove the offending column.

于 2011-03-03T01:31:34.053 に答える
0

あなたはこれを試すことができます このパスに行きます

/var/lib/mysql

データベースのバックアップを(フォルダーとして)作成します

次に、データベースフォルダー内に移動し、テーブルファイルを削除してみてください

これは多分うまくいく

于 2011-03-03T00:14:52.540 に答える