我已将add_column:users,:confirmed_at(confirmation_at),:datetime意外命名。所以我把它改为相应的字段名称:(confirmed_at)第一次迁移后更改字段名称时,Rails数据库迁移中止错误
然后我输入了:rake db:rollback in command line。它被中止由于某种原因,下面但是首先我的Rails信息数据库迁移文件中的代码:
迁移后class AddConfirmableToDevise < ActiveRecord::Migration
def up
add_column :users, :confirmation_token, :string
add_column :users, :confirmed_at, :datetime
add_column :users, :confirmation_sent_at, :datetime
add_index :users, :confirmation_token, unique: true
end
def down
remove_column :users, :confirmation_token, :confirmed_at, :confirmation_sent_at
end
end
错误:
tzurch:~/workspace (gravitar) $ rake db:migrate:redo
#the error that came up below
_________________________________________________
== 20160902201448 AddFullnameToUser: reverting ================================
-- remove_column(:users, :fullname, :string)
-> 0.0207s
== 20160902201448 AddFullnameToUser: reverted (0.0284s) =======================
== 20160902201448 AddFullnameToUser: migrating ================================
-- add_column(:users, :fullname, :string)
-> 0.0008s
== 20160902201448 AddFullnameToUser: migrated (0.0009s) =======================
== 20160913221959 AddConfirmableToDevise: migrating ===========================
-- add_column(:users, :confirmation_token, :string)
-> 0.0009s
-- add_column(:users, :confirmed_at, :datetime)
-> 0.0005s
-- add_column(:users, :confirmation_sent_at, :datetime)
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:
SQLite3::SQLException: duplicate column name: confirmation_sent_at: ALTER TABLE "users" ADD "confirmation_sent_at" datetime:
I尝试完全删除def,然后命令rake db:migrate:redo收到下面的同样的错误,似乎在db中有一些重复的字段,正如错误所示。如果是这样,我该如何查找和删除。裸体w /我通过ruby粗糙....:ActiveRecord :: StatementInvalid:SQLite3 :: SQLException:重复的列名称:confirmation_sent_at:ALTER TABLE“users”ADD“confirmation_sent_at”datetime – Zurch
您需要'rake db:migrate:首先迁移VERSION = migration_version_no',然后再迁移'rake db:migrate:up VERSION = migration_version_no' –
非常感谢我能够恢复,然后使用适当的字段名称进行迁移 – Zurch