【发布时间】:2017-04-24 17:28:14
【问题描述】:
当我写rails db:migrate 时,我得到这个错误:
bundle exec rake db:migrate
== 20161209073230 AddActivationToUsers:迁移 ============================= -- add_column(:users, :activation_digest, :string) rake 中止! StandardError:发生错误,此迁移和所有后续迁移 取消:
SQLite3::SQLException: 重复列名:activation_digest: ALTER 表“用户”添加“activation_digest”varchar
这是我的用户表:
create_users.rb
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :name
t.string :email
t.timestamps null: false
end
end
end
这是我的add_activation_to_users.rb:
class AddActivationToUsers < ActiveRecord::Migration
def change
add_column :users, :activation_digest, :string
add_column :users, :activated, :boolean, default: false
add_column :users, :activated_at, :datetime
end
end
【问题讨论】:
-
检查您的
users表,它可能已经有一个名为activation_digest的列,您再次尝试使用迁移版本20161209073230添加该列。 -
这意味着我根本不需要添加任何迁移。对不起,我对 Ruby 完全陌生
-
您可以从
rails console查看您的用户模型的现有属性 - 使用User.column_names,如果您已经有activation_digest,则无需再次添加。 -
是的,它确实有activation_digest。因此,我一直在尝试迁移我一直拥有的东西。谢谢
标签: ruby-on-rails ruby rails-console