重命名表后,多次迁移的名称为*

时间:2014-04-26 13:23:36

标签: ruby-on-rails

我创建了一个模型Upload,后来将其重命名为UploadFile。 然后在名称"Upload"上创建了一个新模型 现在,"CreateUpload"

有两次相同的迁移

控制台出错: ActiveRecord::DuplicateMigrationNameError: Multiple migrations have the name CreateUpload

如何解决这个问题?

4 个答案:

答案 0 :(得分:3)

删除 create_upload.rb 文件夹中已存在的 db/migrate ,然后重新生成该模型。

这应解决问题。

答案 1 :(得分:1)

您可以直接从 db / migrate / XXXX_duplicate_file_name.rb 中删除重复的迁移文件。 然后再次运行rake db:migrate命令。这很好用! 它对我有用!

答案 2 :(得分:0)

为了解决这个问题:

  • db:migrate 文件夹中删除重复的模型。
  • 再次运行 rake db:migrate 命令。(一切都将被迁移)

答案 3 :(得分:0)

如果您打算再次从头开始运行所有迁移,并且有依赖于现有创建表的连续迁移,那么可接受的答案将中断您的迁移。如果删除原始迁移,则任何相关的连续迁移现在都将失败。我认为this answer更好,并且不会破坏整个迁移链。

就我而言,我的迁移顺序是:

  1. 创建表格
  2. 在新表和另一个表之间创建引用(外键)
  3. 重命名表
  4. 创建表(具有第一个表的原始名称)

像OP一样,我也遇到重复名称的问题,因此从步骤1中删除了迁移。但是,当我从头开始运行迁移(我从MySQL更改为Postgresql)时,它失败了,因为现在第2步正在引用一个不存在的表。最后,我不得不手动重新创建已删除的迁移(具有适当的时间戳),并在链接的问题中使用该技术,以使一切从头到尾都能顺利运行。