AnA*_*ice 767 schema ruby-on-rails rollback database-schema
我有以下迁移文件 db\migrate\20100905201547_create_blocks.rb
如何专门回滚该迁移文件?
Zac*_*ght 1254
rake db:rollback STEP=1
Run Code Online (Sandbox Code Playgroud)
如果要回滚的迁移是应用的最后一个迁移,则可以这样做.您可以将1替换为您想要返回的许多迁移.
例如:
rake db:rollback STEP=5
Run Code Online (Sandbox Code Playgroud)
还将回滚稍后发生的所有迁移(4,3,2和1).
要将所有迁移回滚到(并包括)目标迁移,请使用:(在所有注释指出原始帖子中的错误之后添加了此更正的命令)
rake db:migrate VERSION=20100905201547
Run Code Online (Sandbox Code Playgroud)
为了仅回滚一个特定的迁移(OUT OF ORDER),请使用:
rake db:migrate:down VERSION=20100905201547
Run Code Online (Sandbox Code Playgroud)
请注意,这不会回滚任何中间迁移 - 仅列出所迁移的迁移.如果这不是您的意图,您可以安全地运行rake db:migrate
,它将只重新运行那个,跳过之前没有回滚过的其他任何一个.
小智 855
rake db:migrate:down VERSION=20100905201547
Run Code Online (Sandbox Code Playgroud)
将回滚特定文件.
要查找所有迁移的版本,可以使用以下命令:
rake db:migrate:status
Run Code Online (Sandbox Code Playgroud)
或者,只是迁移文件名的前缀是您需要回滚的版本.
请参阅有关迁移的Ruby on Rails指南条目.
小智 53
要回滚上次迁移,您可以执行以下操作:
rake db:rollback
Run Code Online (Sandbox Code Playgroud)
如果要使用版本回滚特定迁移,则应执行以下操作:
rake db:migrate:down VERSION=YOUR_MIGRATION_VERSION
Run Code Online (Sandbox Code Playgroud)
例如,如果版本是20141201122027,您将执行以下操作:
rake db:migrate:down VERSION=20141201122027
Run Code Online (Sandbox Code Playgroud)
回滚特定的迁移.
uma*_*uma 28
您可以使用rake db:rollback
不同的选项回滚迁移.语法将根据您的要求而有所不同.
如果要仅回滚上次迁移,则可以使用其中一个
rake db:rollback
Run Code Online (Sandbox Code Playgroud)
要么
rake db:rollback STEP=1
Run Code Online (Sandbox Code Playgroud)
如果您想一次回滚迁移次数,那么您只需传递一个参数:
rake db:rollback STEP=n
Run Code Online (Sandbox Code Playgroud)
其中n
是要回滚的迁移数,从最新迁移开始计算.
如果要回滚到特定迁移,则应在以下内容中传递迁移版本:
rake db:migrate:down VERSION=xxxxx
Run Code Online (Sandbox Code Playgroud)
其中xxxxx是迁移的版本号.
Har*_*dik 25
rake db:migrate:down VERSION=your_migrations's_version_number_here
版本是迁移文件名的数字前缀
如何找到版本:
您的迁移文件存储在您的rails_root/db/migrate
目录中.找到要回滚的相应文件并复制前缀编号.
例如
文件名:20140208031131_create_roles.rb
那么版本是20140208031131
Dee*_*ale 16
回滚上次迁移:
# rails < 5.0
rake db:rollback
# rails >= 5.0
rake db:rollback
# or
rails db:rollback
Run Code Online (Sandbox Code Playgroud)
回滚最后一次n
迁移
# rails < 5.0
rake db:rollback STEP=2
# rails >= 5.0
rake db:rollback STEP=2
# or
rails db:rollback STEP=2
Run Code Online (Sandbox Code Playgroud)
回滚特定的迁移
# rails < 5.0
rake db:migrate:down VERSION=20100905201547
# rails >= 5.0
rake db:migrate:down VERSION=20100905201547
# or
rails db:migrate:down VERSION=20100905201547
Run Code Online (Sandbox Code Playgroud)
小智 13
要回滚上次迁移,您可以执行以下操作:
rake db:rollback
Run Code Online (Sandbox Code Playgroud)
如果要使用版本回滚特定迁移,则应执行以下操作:
rake db:migrate:down VERSION=YOUR_MIGRATION_VERSION
Run Code Online (Sandbox Code Playgroud)
如果要调用要回滚的迁移文件db/migrate/20141201122027_create_some_table.rb
,则表示该迁移的VERSION,即20141201122027
创建该迁移的时间戳,以及回滚该迁移的命令:
rake db:migrate:down VERSION=20141201122027
Run Code Online (Sandbox Code Playgroud)
Jon*_*der 10
要将所有迁移回滚到特定版本(例如20181002222222
),请使用:
rake db:migrate VERSION=20181002222222
Run Code Online (Sandbox Code Playgroud)
(请注意,这使用db:migrate
-db:migrate:down
与此问题的其他答案不同。)
假设指定的迁移版本比当前版本旧,这会将所有迁移回滚到指定版本,但不包括指定版本。
例如,如果rake db:migrate:status
最初显示:
(... some older migrations ...)
up 20181001002039 Some migration description
up 20181002222222 Some migration description
up 20181003171932 Some migration description
up 20181004211151 Some migration description
up 20181005151403 Some migration description
Run Code Online (Sandbox Code Playgroud)
跑步:
rake db:migrate VERSION=20181002222222
Run Code Online (Sandbox Code Playgroud)
会导致:
(... some older migrations ...)
up 20181001002039 Some migration description
up 20181002222222 Some migration description
down 20181003171932 Some migration description
down 20181004211151 Some migration description
down 20181005151403 Some migration description
Run Code Online (Sandbox Code Playgroud)
参考:https : //makandracards.com/makandra/845-migrate-or-revert-only-some-migrations
小智 7
步骤:1(检查上次迁移)
bundle exec rake db:migrate:status
Run Code Online (Sandbox Code Playgroud)
步骤:2(回滚上次迁移)
bundle exec rake db:rollback
Run Code Online (Sandbox Code Playgroud)
现在,您可以一一安全地恢复迁移。
rails d migration <migration_name>
bundle exec rake db:rollback STEP=n
其中n
是您要回滚的迁移数量。
例子:bundle exec rake db:rollback STEP=5
如果它是可逆迁移并且最后一个已执行,则运行rake db:rollback
.而且你总是可以使用版本.例如
迁移文件是20140716084539_create_customer_stats.rb,因此rollback命令将是,
rake db:migrate:down VERSION=20140716084539
小智 6
迁移文件如下所示,
20221213051020_my_migrations
Run Code Online (Sandbox Code Playgroud)
在这种情况下,型号名称应为MyMigration
。迁移以复数单词结尾,因此以 结尾migrations
。
要回滚此特定迁移,您必须了解迁移名称的第一部分(迁移名称前面的数字)是迁移编号。
要回滚此迁移,只需打开终端并写入,
rake db:migrate:down VERSION=migration_number
Run Code Online (Sandbox Code Playgroud)
所以最后,您必须在终端中实际输入才能回滚此特定迁移,
在终端上编写以下命令来回滚特定迁移,上面的命令只是为了解释你
rake db:migrate:down VERSION=20221213051020
Run Code Online (Sandbox Code Playgroud)
请记住,每个迁移都有不同的迁移编号,因此请仔细观察并复制粘贴或手动输入。
小智 5
迁移使用命令更改数据库的状态
bundle exec rake db:migrate
Run Code Online (Sandbox Code Playgroud)
我们可以使用以下命令撤消单个迁移步骤
bundle exec rake db:rollback
Run Code Online (Sandbox Code Playgroud)
要一直回到开头,我们可以使用
bundle exec rake db:migrate VERSION=0
Run Code Online (Sandbox Code Playgroud)
正如您可能猜到的,用任何其他数字替换 0 会迁移到该版本号,其中版本号来自按顺序列出迁移。
小智 5
您可以运行down
迁移命令来回滚迁移,如下所示:
rake db:migrate:down VERSION=20100905201547
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
394796 次 |
最近记录: |