Rails 4迁移错误(无法rake db:migrate)SQLite3 :: SQLException:重复的列名

时间:2015-02-26 04:32:28

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

我一直在努力让Paperclip宝石工作。我最初遇到的问题是图片上传但没有显示。然后,我通过执行rake db:rollback来尝试修复错误,从而弄乱了数据库。现在我因为这个错误而无法再次迁移db:

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

我亲自进入了迁移文件夹并删除了该文件,尝试再次生成迁移。我一直在尝试使用rails生成paperclip post image,它确实创建了一个迁移文件,但我无法进行db:migrate。

有什么建议吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

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

  1. 不要删除迁移但注释掉迁移类的内容,然后运行rake db:migrate
  2. 我们说我将此作为我的迁移文件

    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方式。 OR

    1. 从头开始,所以去做rake db:droprake db:createrake db:migrate