我是 Rails 的新手,我试图弄清楚是否是幂等的rake db:create
。rake db:migrate
换句话说,我可以对我的数据库(postgres 或 mysql)重复运行这两个命令而不会导致问题吗?
这个想法是自动化 Rails 部署,并在每次部署 Rails 应用程序时运行这些命令。我想确保它不会以某种方式破坏数据库。
任何其他关于 rake db 迁移幂等性的问题都非常感谢。
我是 Rails 的新手,我试图弄清楚是否是幂等的rake db:create
。rake db:migrate
换句话说,我可以对我的数据库(postgres 或 mysql)重复运行这两个命令而不会导致问题吗?
这个想法是自动化 Rails 部署,并在每次部署 Rails 应用程序时运行这些命令。我想确保它不会以某种方式破坏数据库。
任何其他关于 rake db 迁移幂等性的问题都非常感谢。
是的,它们是幂等的,运行这两个命令应该只是让你的数据库“最新”,一旦你运行它们完成,然后再次运行它们应该什么都不做。
但是,设置全新机器的更好方法是使用
rake db:setup
db:setup
只需按顺序运行这些任务:
db:create
db:schema:load
db:seed
Noticedb:setup
不运行db:migrate
,而是简单地运行db:schema:load
。仅当您将现有数据库升级到较新版本时才需要迁移,因为它们描述了架构的两个版本之间的差异。但是当你完全建立一个新的数据库时,你可以跳过整个迁移历史并跳转到模式的最新状态,即用db:schema:load
. 如果与您的应用程序相关,则db:seed
运行您的db/seeds.rb
文件以创建初始数据。
运行rake -T
详细描述所有 Rails Rake 任务,或者查看 ActiveRecorddatabases.rake
源文件直接阅读代码。