运行迁移时出现重复的列名错误

Mit*_*one 7 migration sqlite ruby-on-rails paperclip

每当我在Rails应用程序中运行迁移时,我都会从SQLite3收到错误:

SQLite3::SQLException: duplicate column name: photo_file_name: ALTER TABLE "users" ADD "photo_file_name" varchar(255)
Run Code Online (Sandbox Code Playgroud)

我已经有一个"向用户添加照片"迁移.这里是:

class AddAttachmentPhotoToUsers < ActiveRecord::Migration
   def self.up
     change_table :users do |t|
     t.has_attached_file :photo
    end
   end

  def self.down
   drop_attached_file :users, :photo
  end
end
Run Code Online (Sandbox Code Playgroud)

这是用户迁移:

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
    t.string :name
    t.string :title
    t.string :department
    t.text :skills
    t.boolean :available

    t.timestamps
   end
 end
end
Run Code Online (Sandbox Code Playgroud)

我有点困惑,因为它告诉我有一个重复的列名"photo_file_name",但我需要将它添加到Users表中?这没有意义.我不应该删除它吗?

如果您需要有关我的应用的任何其他详细信息,请告诉我们

ilt*_*mpo 17

如果迁移与数据库架构不同步,则会发生这种情况.如果这可能发生

  • 你"手动"修改了数据库模式
  • 您更改了正在运行的迁移文件
  • schema_migrations表中尚未更新迁移

如果您依赖于数据库中的数据,rake db:reset则会从头开始重新运行所有迁移.否则,您必须通过添加到schema_migrations表中将冲突的迁移识别为已运行.

另请参阅Rails指南.


Jef*_*vic 5

我还通过登录 Heroku 数据库,然后仅删除有问题的列来解决这个问题。我认为这是一个破坏性较小的解决方案。