我创建了一个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继续给出上面的错误。
发布于 2011-03-03 01:31:34
看起来,我无意中针对错误的数据库运行了手动MySQL命令(我没有切换到数据库的“开发”版本)。使用正确的数据库,我能够手动删除违规列。
发布于 2011-03-03 00:14:52
你可以试试这个,走这条路
/var/lib/mysql并对数据库进行备份(作为文件夹)
然后进入数据库文件夹并尝试删除表文件。
这也许能行
https://stackoverflow.com/questions/5174854
复制相似问题