中止alter后重复列名称错误

时间:2011-03-02 23:30:37

标签: mysql ruby-on-rails migration alter-table mysql-error-1091

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

2 个答案:

答案 0 :(得分:0)

你可以试试这个 走这条路

/var/lib/mysql

并备份您的数据库(作为文件夹)

然后进入数据库文件夹并尝试删除表文件

这可能有效

答案 1 :(得分:0)

看起来我不小心在错误的数据库上运行手动MySQL命令(我没有切换到数据库的“开发”版本)。使用正确的数据库,我能够手动删除有问题的列。

相关问题