Heroku迁移db错误未知列

时间:2015-06-28 00:23:43

标签: ruby-on-rails database heroku migration

我正在研究我的ruby on rails项目,当我运行heroku db:migrate时,我收到有关列不存在的错误。

我知道这是因为我有一个我手动编辑的迁移文件,用于删除我之前创建的列而不是创建新的迁移文件。

我删除了remove_column行并迁移了db我的本地数据库但是当我将它迁移到heroku时,它仍会运行迁移文件以删除列,即使该行不再存在于实际文件中。

我删除了我的数据库并再次加载了架构,但仍然发生了heroku错误。

2 个答案:

答案 0 :(得分:0)

您是否在更改文件后将提交推送到heroku?

答案 1 :(得分:0)

使用该特定迁移文件进行迁移后,不要编辑Rails数据库迁移文件

这是你的问题

  

我有一个我手动编辑的迁移文件,用于删除我之前创建的列,而不是创建新的迁移文件。

始终创建新的迁移文件以引发列更改

为什么呢?因为迁移文件就像是以非常特定的顺序放置的一系列互连链接,因此当raked允许您重新创建数据库时,例如,生成服务器。如果您打扰其中一个链接,那么构建数据库所需的链就会被破坏,正如您所观察到的那样。这是迁移文件具有特定时间戳的原因之一,它们是用于创建,执行和保存的唯一实体。

修复损坏的迁移

现在,您的迁移链已经崩溃了。 有几种选择:

  • 您可以尝试恢复您编辑和重新启动的迁移文件。这值得一试,它可能会奏效。
  • 将所有迁移回滚到编辑文件之前的迁移。然后创建所需的迁移并运行rake。
  • 根据数据库的破坏程度,您可能只想重新学习有关Rails数据库迁移文件的痛苦教训。