我创建了一个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
继续给出我上面的错误。
答案 0 :(得分:0)
你可以试试这个 走这条路
/var/lib/mysql
并备份您的数据库(作为文件夹)
然后进入数据库文件夹并尝试删除表文件
这可能有效
答案 1 :(得分:0)
看起来我不小心在错误的数据库上运行手动MySQL命令(我没有切换到数据库的“开发”版本)。使用正确的数据库,我能够手动删除有问题的列。