我可以在Ruby on Rails的Heroku中手动创建生产迁移吗?

问题描述 投票:0回答:2

我已经用Ruby和Rails创建了一个应用程序。问题是,当我开发它时,我在迁移时遇到了一些问题,因为我创建了迁移但使用了错误的语法。发生的是,我删除了一些文件,因为卖出的无效迁移与新迁移具有相同的名称,但是在此过程中,我意外删除了一些迁移(显然是在运行rails db:migrate之后)。该项目实际使用。例如,我有与保留表相关的服务表,因为服务有Reservation_id,但是我没有迁移文件说AddReservationIdToService。

所以现在我想使用Heroku进行生产。事实是O必须更改为postgresql,因为Heroku不支持sqlite。因此,我必须再次运行de:migrate才能在新数据库中创建表和关系,但是我需要我解释删除的文件。问题是:

我可以手动创建迁移,所以当我为PostgreSQL运行db:migrate时,会创建数据库的完整结构而又不缺少关系吗?

ruby-on-rails ruby postgresql heroku database-migration
2个回答
0
投票

是,您可能会另外创建几个迁移文件。验证您现在已经在本地使用sqlite拥有了想要的表。将这些表画在一张纸上(或最好的地方),然后检查此正式文件API documentation of Rails

删除之前进行的所有迁移,并根据您绘制的表创建另一个迁移。

工作流程将类似于:

1]“我需要创建一个名为Reservation的表,该表在文档中显示在哪里?”

2)“我需要一个名为Service的表,该表在文档中显示在哪里?

3)“我需要为服务reservaton_id添加带有外键的列,本文档怎么说?

对于上述所有步骤,请像通常一样创建对应的迁移文件。

这里的主要区别是不在本地运行迁移。而是将您的新版本应用程序推送到heroku远程分支,然后there

运行迁移,例如:

heroku run rails db:migrate

请记住不要在本地运行相同的迁移,因为您已经在本地拥有这些表。

最后两个建议是:

1)如果迁移没有按预期进行,请不要删除迁移文件。而是运行rails db:rollback,然后重试。

2)继续在版本控制的同一分支上跟踪迁移文件。


0
投票

您实际上并不需要迁移来重新创建现有的数据库-实际上,出于几个原因(包括遇到的丢失的迁移文件问题)进行尝试不是一个好主意。您可以简单地运行:

© www.soinside.com 2019 - 2024. All rights reserved.