我很清楚rake db:migrate
和rake db:reset
之间的区别.我不明白的是rake db:schema:load
和前两个有什么不同.
为了确保我的观点一致:
-
rake db:migrate
-运行尚未运行的migrations. -
rake db:reset
-清除数据库(可能是rake db:drop
+rake db:create
+rake db:migrate
),并在新数据库上运行migrations.
我很清楚rake db:migrate
和rake db:reset
之间的区别.我不明白的是rake db:schema:load
和前两个有什么不同.
为了确保我的观点一致:
rake db:migrate
-运行尚未运行的migrations.rake db:reset
-清除数据库(可能是rake db:drop
+rake db:create
+rake db:migrate
),并在新数据库上运行migrations.db:migrate次(单个)尚未运行的migrations.
db:create创建数据库
db:drop删除数据库
db:schema:load按照模式在现有数据库中创建表和列.rb.这将删除现有数据.
db:setup数据库:创建,数据库:模式:加载,数据库:种子
db:reset分贝:下降,分贝:设置
db:migrate:reset数据库:删除,数据库:创建,数据库:迁移
通常,您会在通过新的迁移文件对模式进行更改后使用db:migrate(只有在数据库中已有数据时,这才有意义).db:schema:load在安装应用程序的新实例时使用.
我希望这能有所帮助.
rails 3.2.12的更新:
我刚刚判断了源代码,依赖项如下所示:
db:create创建数据库 for the current env
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(仅限)运行数据库/种子.rb文件
db:schema:load将模式加载到当前环境的数据库中
db:schema:dump转储当前env的模式(并且似乎也创建了数据库)
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)