Ruby on rails 旧迁移在Rails中失败

Ruby on rails 旧迁移在Rails中失败,ruby-on-rails,migration,Ruby On Rails,Migration,我有一个Rails应用程序,它有很多迁移。现在我想重新定义几乎所有的数据库结构,所以大多数迁移都是无用的 我应该采取什么方法?使用修改现有表的迁移来修改现有表,还是删除这些迁移并创建新的迁移 谢谢如果您将schema.rb签入VCS,并且您没有在现有迁移中植入数据库,那么删除或归档旧迁移可能是可以的。无论如何,都不建议从迁移创建数据库。为此,您应该只使用schema.rb 找到一篇关于这个的好文章 在数据库中,如果要修改数据库迁移: 您可以更新迁移文件,也可以通过重做来更新该迁移: rake d

我有一个Rails应用程序,它有很多迁移。现在我想重新定义几乎所有的数据库结构,所以大多数迁移都是无用的


我应该采取什么方法?使用修改现有表的迁移来修改现有表,还是删除这些迁移并创建新的迁移


谢谢

如果您将
schema.rb
签入
VCS
,并且您没有在现有迁移中植入数据库,那么删除或归档旧迁移可能是可以的。无论如何,都不建议从迁移创建数据库。为此,您应该只使用schema.rb

找到一篇关于这个的好文章


在数据库中,如果要修改数据库迁移:

您可以更新迁移文件,也可以通过重做来更新该迁移:

rake db:migrate:redo VERSION=001XXXXX
要停止现有迁移,请执行以下操作:

rake db:migrate:down VERSION=001XXXXX
rake db:migrate:up VERSION=001XXXXX
要更新特定迁移,请执行以下操作:

rake db:migrate:down VERSION=001XXXXX
rake db:migrate:up VERSION=001XXXXX

我觉得迁移应该能够回滚并应用。如果对数据库结构进行重大更改,可能会使回滚这些旧迁移变得困难(如果不是不可能的话)。如果是这种情况,我会删除它们。文件db/schema.rb(不要修改这个文件!!!)是上次运行迁移时数据库的结构(每次迁移后,Rails都会更新该文件)。您最终可以删除所有迁移,并将它们替换为每个表(模型)一个迁移,内容将是schema.rb的内容。使用修改现有表的迁移来修改现有表。最好记录下所做的事情。如果你开始后退并删除一些东西,你可能会遇到问题,无法到达一个有效的点。