[英]How to delete migration files in Rails 3
我想移除/删除迁移文件。 我该怎么做? 我知道这里有类似的问题,但作为更新,有没有比执行脚本/销毁更好的方法?
另外,如果我删除/删除迁移,我应该执行db:reset
或db:drop
吗?
我通常:
rake db:migrate VERSION=XXX
到我要删除的版本之前的版本。rake db:migrate
。如果您的应用程序已经在生产或暂存中,那么编写另一个会破坏您的表或列的迁移会更安全。
迁移的另一个重要参考是: http : //guides.rubyonrails.org/migrations.html
删除迁移的另一种方法:
$ rails d migration SameMigrationNameAsUsedToGenerate
在执行rake db:migrate
之前使用它,因为数据库中的更改将永远保留:) - 或手动删除数据库中的更改
从应用程序的主目录运行以下命令:
rake db:migrate:down VERSION="20140311142212"
(这里的 version 是创建迁移时由 rails 前置的时间戳。此操作将还原由于此迁移而导致的数据库更改)
Run "rails destroy migration migration_name"
(migration_name 是创建迁移时选择的一个用途。从迁移文件名中删除“ timestamp_ ”以获得它)
我们可以使用,
$ 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
我刚刚遇到了同样的问题:
那为我修好了
边注:从 rails 5.0.0 开始rake
已更改为rails
因此执行以下操作
rails db:migrate 版本=0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.