为什么我的 schema.rb 文件没有更新?
Why isn't my schema.rb file updated?
我最近查看了我的 schema.rb 文件,惊恐地发现我的数据库中确实存在的某些列没有出现,并且一些 table 完全丢失了。缺失的列是通过 "def change add_column" 迁移添加到数据库中的,尽管以这种方式添加的一些列确实按预期出现在 schema.rb.
中
仔细检查后,我发现自从我创建用户 table 后 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 时它停止更新。记不太清楚了,不过我觉得时间还算合理。
您可以使用 rake db:schema:dump
从当前数据库结构重新创建文件。
架构文件独立于驱动程序,因此从 sqlite3 迁移到 PostgreSQL 应该无关紧要。确保文件中定义的 version
不大于当前日期。您还可以将整个文件添加到问题的片段中。
我最近查看了我的 schema.rb 文件,惊恐地发现我的数据库中确实存在的某些列没有出现,并且一些 table 完全丢失了。缺失的列是通过 "def change add_column" 迁移添加到数据库中的,尽管以这种方式添加的一些列确实按预期出现在 schema.rb.
中仔细检查后,我发现自从我创建用户 table 后 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 时它停止更新。记不太清楚了,不过我觉得时间还算合理。
您可以使用 rake db:schema:dump
从当前数据库结构重新创建文件。
架构文件独立于驱动程序,因此从 sqlite3 迁移到 PostgreSQL 应该无关紧要。确保文件中定义的 version
不大于当前日期。您还可以将整个文件添加到问题的片段中。