【问题标题】:Duplicate column name error after aborting alter中止更改后出现重复的列名错误
【发布时间】: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


    【解决方案1】:

    你可以试试这个 走这条路

    /var/lib/mysql
    

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

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

    这可能有用

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2020-11-14
        • 2013-02-17
        • 2011-11-11
        • 1970-01-01
        • 2021-09-24
        • 2016-06-16
        • 2014-08-22
        • 1970-01-01
        • 2013-08-11
        相关资源
        最近更新 更多