【发布时间】:2020-10-06 17:46:07
【问题描述】:
我用 Ruby 和 Rails 创建了一个应用程序。问题是,当我开发它时,我在迁移时遇到了一些问题,因为我创建了它们但语法错误。发生的事情是我删除了一些文件,因为出售的无效迁移与新迁移的名称相同,但在这中间我不小心删除了一些迁移(显然是在运行 rails db:migrate 之后)项目实际使用。例如,我有 Service 表,它与 Reservation 表相关,因为 Service 有 reservation_id,但我没有显示 AddReservationIdToService 的迁移文件。
所以现在我想使用 Heroku 进行生产。问题是 O 必须更改为 postgresql,因为 Heroku 不支持 sqlite。所以我必须再次运行 de:migrate 以在新数据库中创建表和关系,但我需要我解释过我删除的文件。问题是:
我可以手动创建迁移,所以当我为 postgres 运行 db:migrate 时,会创建数据库的完整结构而不缺少关系?
【问题讨论】:
-
迁移可能很痛苦。我的建议是在添加/删除迁移文件时执行
rake db:drop和rake db:createrake db:migrate,直到你得到你想要的。但是首先在本地环境中使用 sqlite 在本地执行此操作,如果您想将当前的 sqlite 数据库名称更改为另一个,这样您就不会删除旧的数据库。然后,当您能够毫无错误地执行 drop create 和 migrate 时,请在您的 heroku db 中执行此操作。您的 Heroku 数据库中是否已有数据?
标签: ruby-on-rails ruby postgresql heroku database-migration