我想删除/删除迁移文件。我该怎么做呢?我知道这里有类似的问题,但作为更新,有没有比做脚本/破坏更好的方法?
另外,如果删除/删除迁移,我应该db:reset
还是db:drop
?
答案 0 :(得分:139)
我通常:
rake db:migrate VERSION=XXX
,到我要删除的版本之前的版本。rake db:migrate
。如果您的应用程序已经在生产或登台,那么只编写另一个销毁您的表或列的迁移更安全。
迁移的另一个重要参考是:http://guides.rubyonrails.org/migrations.html
答案 1 :(得分:65)
删除迁移的另一种方法:
$ rails d migration SameMigrationNameAsUsedToGenerate
在执行rake db:migrate
之前使用它,因为数据库中的更改将永远保留:) - 或手动删除更改
答案 2 :(得分:18)
从app的主目录运行以下命令:
rake db:migrate:down VERSION="20140311142212"
(此处版本是创建迁移时由rails预先设置的时间戳。此操作将还原由于此迁移而导致的数据库更改)
Run "rails destroy migration migration_name"
(migration_name是创建迁移时选择的用户。从迁移文件名中删除“ timestamp _ ”以获取它)
答案 3 :(得分:9)
答案 4 :(得分:8)
我们可以使用,
$ rails d migration table_name
将删除迁移。
答案 5 :(得分:2)
有时我发现自己删除了迁移文件,然后从数据库中删除了表schema_migrations上的相应条目。不漂亮,但它的工作原理。
答案 6 :(得分:2)
在Rails 5中也可以使用。
如果迁移是最新的,则可以通过执行以下操作来删除迁移添加的数据库列:
rake db:rollback
然后通过运行以下命令删除迁移文件本身:
rails d migration WhateverYourMigrationWasNamed.rb
答案 7 :(得分:1)
答案 8 :(得分:0)
我遇到了同样的问题:
为我修好了
答案 9 :(得分:0)
这些答案都不能完全解决我要删除的迁移时遇到的问题:
我已经在其他分支中创建并运行了迁移,然后将该迁移丢弃了。问题是运行迁移时,rails将版本添加到数据库的schema_migrations
表中。因此,即使未在您的数据库结构或架构中列出它,Rails也会寻找它。
您可以运行以下命令来显示这些孤立的迁移:
rails db:migrate:status
请注意缺少的迁移版本,然后进入数据库控制台:
rails dbconsole
现在,从迁移表中手动删除版本:
delete from schema_migrations where version='<version>';
您现在应该很好。
答案 10 :(得分:0)
侧面说明:
从Rails 5.0.0开始
rake
已更改为rails
因此,请执行以下操作
rails db:migrate VERSION = 0