每当我在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”但是我需要将它添加到Users表中吗?这没有意义。我不应该删除它吗?
如果您需要有关我的应用的任何其他详细信息,请与我们联系。
答案 0 :(得分:15)
如果迁移与数据库架构不同步,则会发生这种情况。如果
,可能会发生这种情况schema_migrations
表如果您不依赖数据库中的数据,rake db:reset
将从头开始重新运行所有迁移。否则,您必须通过添加到schema_migrations
表来将冲突的迁移识别为已运行。
答案 1 :(得分:1)
我也通过登录heroku数据库解决了这个问题,然后只删除了违规列。我认为这是一种破坏性较小的解决方案。
答案 2 :(得分:0)
rails db:create db:migrate