繁体   English   中英

如何删除 Rails 3 中的迁移文件

[英]How to delete migration files in Rails 3

我想移除/删除迁移文件。 我该怎么做? 我知道这里有类似的问题,但作为更新,有没有比执行脚本/销毁更好的方法?

另外,如果我删除/删除迁移,我应该执行db:resetdb:drop吗?

我通常:

  1. 在所有环境上执行rake db:migrate VERSION=XXX到我要删除的版本之前的版本。
  2. 手动删除迁移文件。
  3. 如果有待处理的迁移(即,我删除的迁移不是最后一个),我只需再次执行新的rake db:migrate

如果您的应用程序已经在生产或暂存中,那么编写另一个会破坏您的表或列的迁移会更安全。

迁移的另一个重要参考是: http : //guides.rubyonrails.org/migrations.html

删除迁移的另一种方法:

$ rails d migration SameMigrationNameAsUsedToGenerate

在执行rake db:migrate之前使用它,因为数据库中的更改将永远保留:) - 或手动删除数据库中的更改

从应用程序的主目录运行以下命令:

  1. rake db:migrate:down VERSION="20140311142212" (这里的 version 是创建迁移时由 rails 前置的时间戳。此操作将还原由于此迁移而导致的数据库更改)

  2. Run "rails destroy migration migration_name" (migration_name 是创建迁移时选择的一个用途。从迁移文件名中删除“ timestamp_ ”以获得它)

您还可以像这样运行向下迁移:

rake db:migrate:down VERSION=versionnumber

有关更多信息,请参阅有关迁移的Ruby on Rails 指南

我们可以使用,

$ rails d migration table_name  

这将删除迁移。

这些答案都不太适合我遇到的问题,因为我想删除的迁移丢失了:我已经在其他分支中创建并运行了迁移,然后将其丢弃。 问题是在运行迁移时,rails 会将版本添加到数据库中的schema_migrations表中。 因此,即使它未在您的数据库结构或模式中列出,rails 也会查找它。 您可以通过运行来显示这些孤立的迁移:

rails db:migrate:status

注意缺少迁移的版本并进入数据库控制台:

rails dbconsole

现在手动从迁移表中删除版本:

delete from schema_migrations where version='<version>';

你现在应该很好。

有时我发现自己删除了迁移文件,然后从数据库中删除了表 schema_migrations 上的相应条目。 不漂亮,但它有效。

这也适用于 Rails 5。

如果迁移是最新的,您可以通过执行以下操作删除迁移添加的数据库列:

rake db:rollback

然后通过运行删除迁移文件本身:

rails d migration WhateverYourMigrationWasNamed.rb 

看4.1回滚

http://guides.rubyonrails.org/migrations.html

$耙分贝:回滚

我刚刚遇到了同样的问题:

  1. rails d migration fuu - 这删除了具有最后时间戳的迁移
  2. rails d migration fuu - 这删除了另一个迁移
  3. 使用 git status 检查它不再位于未跟踪的文件中
  4. rails g 迁移 fuu

那为我修好了

边注:从 rails 5.0.0 开始rake已更改为rails因此执行以下操作

rails db:migrate 版本=0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM