0

我正在尝试调试我在迁移数据库时遇到的问题。

我让我的应用程序运行没有问题,并将其推送到 heroku,然后运行rake db:migrate并收到错误

PG::Error: 错误:关系“地点”不存在
第 4 行:在哪里 a.attrelid = '"places"'::regclass
^
: 选择 a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull
FROM pg_attribute a LEFT JOIN pg_attrdef d
在 a.attrelid = d.adrelid 和 a.attnum = d.adnum
WHERE a.attrelid = '"places"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
由 a.attnum 订购

我发现迁移在本地很好,但在服务器上迁移时却不行,这很奇怪。我发现其他一些人也有类似的问题,但从未发现有人有解决方案。我在 StackOverflow 上找到的答案没有被接受。在尝试了几个小时不同的事情之后,我想我会尝试从头开始创建一个新的 heroku 应用程序并将我的应用程序推送到它(对其他人有用),基本上是重新开始。

当我这样做时,我得到了同样的错误,但现在在wineries.

奇怪的是,在 Heroku 的推荐下,我尝试在本地创建一个新的数据库,并运行我的迁移。

现在在本地,我得到了同样的错误,但是在 table 上admin_users

我很确定实际的迁移文件没有任何问题,因为每次运行迁移时,我都会得到一个不同的表,因此在某些方面会影响到不同的迁移。

我试过删除一些宝石,但仍然出现同样的错误。

rake:db 是否在迁移文件以外的任何文件之外查找?这可能是关系问题吗?

关于如何解决这个问题的任何其他建议?

4

1 回答 1

1

您是否在迁移中访问/使用任何模型来进行任何数据更新?您是否在配置/初始化程序中使用任何模型?rake db:migrate 加载 Rails 环境,因此如果您尝试访问尚不存在的模型,它将吐出此错误...

于 2013-01-03T21:35:37.110 回答