小编典典

rake db:migrate db:reset 和 db:schema:load 之间的区别

all

rake db:migrate和之间的区别rake db:reset对我来说很清楚。我不明白的是rake db:schema:load与前两者有何不同。

只是为了确保我在同一页面上:

  • rake db:migrate- 运行尚未运行的迁移。
  • rake db:reset- 清除数据库(可能是rake db:drop++ rake db:createrake db:migrate并在新数据库上运行迁移。

阅读 149

收藏
2022-03-03

共1个答案

小编典典

  • 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)

2022-03-03