【发布时间】:2011-03-02 23:30:36
【问题描述】:
我创建了一个 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 继续给我上面的错误。
【问题讨论】:
标签: mysql ruby-on-rails migration alter-table mysql-error-1091