9

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

SQLite3::SQLException: duplicate column name: photo_file_name: ALTER TABLE "users" ADD "photo_file_name" varchar(255)

我已经进行了“向用户添加照片”迁移。这里是:

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

这是用户迁移:

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

我对此有点困惑,因为它告诉我有一个重复的列名“photo_file_name”,但我需要将它添加到用户表中?那没有意义。我不需要删除它吗?

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

4

3 回答 3

23

如果您的迁移与数据库架构不同步,就会发生这种情况。如果发生这种情况

  • 您“手动”修改了数据库架构
  • 您更改了正在运行的迁移文件
  • schema_migrations表中未更新迁移

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

另请参阅迁移的 RailsGuides

于 2012-11-11T17:46:17.697 回答
3

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

于 2016-07-21T21:03:10.320 回答
0
  • 从工作台中删除开发模式
  • rails db:create db:migrate
于 2018-07-18T07:11:33.553 回答