rake db:migrate和之间的区别rake db:reset对我来说很清楚。我不明白的是rake db:schema:load与前两者有何不同。
rake db:migrate
rake db:reset
rake db:schema:load
只是为了确保我在同一页面上:
rake db:drop
rake db:create
db:migrate 运行(单个)尚未运行的迁移。
db:create 创建数据库
db:drop 删除数据库
db:schema:load 在 schema.rb 之后的现有数据库中创建表和列。这将删除现有数据。
db:setup 执行 db:create, db:schema:load, db:seed
db:reset 执行 db:drop, db:setup
db:migrate:reset 执行 db:drop, db:create, db:migrate
通常,您将在通过新的迁移文件对架构进行更改后使用 db:migrate(这仅在数据库中已有数据时才有意义)。db:schema:load 用于设置应用程序的新实例。
我希望这会有所帮助。
rails 3.2.12 的更新:
我刚刚检查了源和依赖关系现在是这样的:
db:create 为当前环境创建数据库
db:create:all 为所有环境创建数据库
db:drop 删除当前环境的数据库
db:drop:all 删除所有环境的数据库
db:migrate 为尚未运行的当前环境运行迁移
db:migrate:up 运行一个特定的迁移
db:migrate:down 回滚一个特定的迁移
db:migrate:status 显示当前迁移状态
db:rollback 回滚 上次迁移
db:forward 将当前模式版本推进到下一个
db:seed (仅)运行 db/seed.rb 文件
db:schema:load 将模式加载到当前环境的数据库中
db:schema:dump 转储当前环境的模式(并且似乎也创建了数据库)
db:setup 运行 db:create db:schema:load db:seed
db:reset 运行 db:drop db:setup
db:migrate:redo 根据指定的迁移运行 (db:migrate:down db:migrate:up) 或 (db:rollback db:migrate)
db:migrate:reset 运行 db:drop db:create db:migrate
有关更多信息,请查看https://github.com/rails/rails/blob/v3.2.12/activerecord/lib/active_record/railties/databases.rake(适用于 Rails 3.2.x)和https://github .com/rails/rails/blob/v4.0.5/activerecord/lib/active_record/railties/databases.rake(适用于 Rails 4.0.x)