【问题标题】:Rails 4 Migration Error (Can't rake db:migrate) SQLite3::SQLException: duplicate column nameRails 4 迁移错误 (Can't rake db:migrate) SQLite3::SQLException: 重复的列名
【发布时间】:2015-02-26 04:32:28
【问题描述】:

我一直在尝试让 Paperclip gem 正常工作。我最初遇到的问题是图片正在上传但没有显示。然后,我通过执行 rake db:rollback 来尝试修复错误,从而弄乱了数据库。现在我不能 rake db:migrate 因为这个错误

SQLite3::SQLException: duplicate column name: image_file_name: ALTER TABLE "posts" ADD "image_file_name" varchar

我亲自进入了迁移文件夹并删除了该文件以尝试再次生成迁移。我一直在尝试让 rails 生成回形针帖子图像,它确实创建了一个迁移文件,但我无法 rake db:migrate。

有什么建议吗?

谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 sqlite


    【解决方案1】:

    删除迁移文件并不会真正回滚它在数据库中所做的更改。您最好的选择是:

    1. 不删除迁移而是注释掉迁移类的内容,运行rake db:migrate

    假设我有这个作为我的迁移文件

    class AddEmailSentToNeeds < ActiveRecord::Migration
      def change
        add_column :needs, :email_sent, :boolean ,default: false
      end
    end
    

    只注释掉方法但离开类,所以它会是:

    class AddEmailSentToNeeds < ActiveRecord::Migration
      # def change
      #   add_column :needs, :email_sent, :boolean ,default: false
      # end
    end
    

    这只是告诉 Rails 跳过此迁移的一种 hacky 方式。 或

    1. 从头做起,rake db:droprake db:createrake db:migrate

    【讨论】:

    • 感谢您的回复!我尝试将其注释掉,但在尝试运行 rake db:migrate - NameError: uninitialized constant AddAttachmentImageToPosts 时出现此错误
    • 我做了一个临时修复,无法让回形针工作,但我删除了文件并再次运行迁移。
    • @Wilson:不要注释掉迁移文件的全部内容。我将编辑我的帖子
    猜你喜欢
    • 2015-03-06
    • 2014-03-25
    • 2017-02-05
    • 1970-01-01
    • 2014-09-17
    • 2017-01-07
    • 2016-11-09
    • 2016-05-14
    • 2011-12-03
    相关资源
    最近更新 更多