gpt4 book ai didi

ruby-on-rails - rake db :migrate db:reset and db:schema:load之间的区别

转载 作者:数据小太阳 更新时间:2023-10-29 06:16:06 26 4
gpt4 key购买 nike

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

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

  • rake db:migrate - 运行尚未运行的迁移。
  • rake db:reset - 清除数据库(大概是做一个 rake db:drop + rake db:create + rake db:migrate) 并在新数据库上运行迁移。

最佳答案

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

关于ruby-on-rails - rake db :migrate db:reset and db:schema:load之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10301794/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com