我创建了一个 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
继续给我上面的错误。