我不断收到错误消息: -- add_column(:articles, :user_id, :integer) rake 中止! StandardError:发生错误,此迁移和所有后续迁移均已取消:
SQLite3::SQLException:重复列名:user_id:ALTER TABLE“文章”ADD“user_id”整数
这是我所做的所有迁移:
class AddUserIdToArticles < ActiveRecord::Migration
def change
add_column :articles, :user_id, :integer
end
end
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :username
t.string :email
t.timestamps
end
end
end
class AddDescriptionToArticles < ActiveRecord::Migration
def change
add_column :articles, :description, :text
add_column :articles, :created_at, :datetime
add_column :articles, :updated_at, :datetime
end
end
class CreateArticles < ActiveRecord::Migration
def change
create_table :articles do |t|
t.string :title
end
end
end
最佳答案
出现错误
class AddUserIdToArticles < ActiveRecord::Migration
def change
add_column :articles, :user_id, :integer
end
end
因为user_id
列已经存在于表articles
中
您可以通过将代码更改为进行验证:
class AddUserIdToArticles < ActiveRecord::Migration
def change
unless column_exists? :articles, :user_id
add_column :articles, :user_id, :integer
end
end
end
但我不建议这样做,该列一开始就不应该存在,或者您只是试图添加已经存在的列。
顺便说一句,我建议为您的外键添加索引,例如 user_id
关于ruby-on-rails - Ruby on Rails 重复列名 : user_id: ALTER TABLE "articles" ADD "user_id" integer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36685112/