如何“平铺”Rails迁移?

12

我现在正在部署我的第一个Rails应用程序,但在此过程中,我弄坏了一个迁移。当我尝试将应用程序推送到生产服务器并运行rake db:migrate时,会在某个地方出现错误。

现在,我懒得逐个处理我的迁移以找出问题所在,因此我试图避免这样做。考虑到我的当前开发数据库运行良好,是否有一种方法可以将当前模式“扁平化”为单个综合迁移?

我知道这很随意,也知道我可能犯了一个愚蠢的错误,从而导致迁移链中断。(我可能在某个地方直接编辑了数据库模式,现在我明白这是不可取的。)不过,这是一个非常小的项目,我是唯一参与者,如果可能的话,我想快速解决这个问题。

有办法做到这一点吗?

感谢您提供专业的帮助。

2个回答

15

db/schema.rb 文件的作用就在于此。如果您的迁移只涉及结构变更,您可以运行 rake db:schema:load 而不是运行 rake db:migrate 来获取表的绝对结构。


1
如果他在此期间更改了数据库,他可能需要先执行“rake db:schema:dump”。 - Tim Snowhite
干得漂亮。谢谢! - Chris Allen Lane

2
如果您直接编辑了模式,您需要运行以下命令:
rake db:schema:dump

这将获取数据库中的内容并创建一个schema.rb文件。然后您可以随时运行rake db:schema:load。但是这意味着您的迁移仍然存在问题。您可以删除所有迁移并从schema.rb文件重新创建它们。


谢谢Kyle!是的,我刚刚删除了旧的迁移,现在一切正常。 - Chris Allen Lane

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接