2

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

4

2 回答 2

0

你可以试试这个去这条路

/var/lib/mysql

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

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

这可能有用

于 2011-03-03T00:14:52.540 回答
0

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

于 2011-03-03T01:31:34.053 回答