我最近查看了我的schema.rb文件,惊讶地发现数据库中确实存在的某些列没有出现,并且一些表完全丢失了。缺失的列是通过"def change add_column“迁移添加到数据库中的,尽管以这种方式添加的一些列在schema.rb中确实按预期显示。
仔细检查后,我意识到自从我创建了Users表之后,schema.rb就没有更新过。
20151019205241_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在实践中,这对我来说并不是问题,但我认为schema.rb应该保持自动更新,为了重新创建数据库,更新它是很重要的。有人能帮我弄清楚为什么它不会更新吗?
一种可能性是,当我将数据库从sqlite3切换到PostgreSQL时,它停止了更新。我记不清了,但我认为时机是有道理的。
发布于 2016-08-16 05:03:21
您可以使用rake db:schema:dump从当前数据库结构重新创建文件。
模式文件独立于驱动程序,因此从sqlite3迁移到PostgreSQL应该无关紧要。确保文件中定义的version不大于当前日期。您还可以将整个文件添加到问题的片段中。
https://stackoverflow.com/questions/38961558
复制相似问题