【发布时间】:2017-06-06 18:58:42
【问题描述】:
我正在阅读 Hartl 书的第 10 章。在本章的结尾,我们重置了heroku 数据库,然后进行了迁移。但是当我运行时:
heroku run rails db:migrate
我得到一个错误:
rails aborted!
StandardError: An error has occurred, this and all later migrations canceled:
PG::UndefinedColumn: ERROR: column "password_digest_string" of relation "users" does not exist
: ALTER TABLE "users" DROP "password_digest_string"
在本教程的前面部分,我删除了一个名为 password_digest_string 的列,因为它的名称不正确,我还不需要它。似乎 rails 正在尝试再次删除该列,即使它不再存在。我删除了删除此列的迁移文件,但它仍在尝试删除它。同样奇怪的是,自从删除该列以来,我已经多次迁移数据库,并且在我重置它之前从未遇到过这个问题。有什么建议吗?
编辑:
这是我的架构文件:
ActiveRecord::Schema.define(version: 20170121224748) do
create_table "users", force: :cascade do |t|
t.string "name"
t.string "email"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "password_digest"
t.string "remember_digest"
t.boolean "admin", default: false
t.index ["email"], name: "index_users_on_email", unique: true
end
end
编辑:
我的迁移按时间戳顺序排列。
..._create_users.rb
class CreateUsers < ActiveRecord::Migration[5.0]
def change
create_table :users do |t|
t.string :name
t.string :email
t.timestamps
end
end
end
..._add_index_to_users_email.rb
class AddIndexToUsersEmail < ActiveRecord::Migration[5.0]
def change
add_index :users, :email, unique: true
end
end
..._add_password_digest_to_users.rb
class AddPasswordDigestToUsers < ActiveRecord::Migration[5.0]
def change
add_column :users, :password_digest, :string
end
end
..._remove_columns.rb
class RemoveColumns < ActiveRecord::Migration[5.0]
def self.up
remove_column :users, :password_digest_string
end
end
..._add_remember_digest_to_users.rb
class AddRememberDigestToUsers < ActiveRecord::Migration[5.0]
def change
add_column :users, :remember_digest, :string
end
end
..._add_admin_to_users.rb
class AddAdminToUsers < ActiveRecord::Migration[5.0]
def change
add_column :users, :admin, :boolean, default: false
end
end
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 heroku