rake db:migrate在查看迁移文件之外做了什么?

时间:2013-01-03 21:12:45

标签: ruby-on-rails-3 rake

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

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

PG::Error: ERROR: relation "places" does not exist
LINE 4: WHERE a.attrelid = '"places"'::regclass
^
: SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull
FROM pg_attribute a LEFT JOIN pg_attrdef d
ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attrelid = '"places"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum

我发现迁移在本地很好,但在服务器上迁移时却没有。我发现其他一些人有类似的问题,但从未发现任何人都有解决方案。我在StackOverflow上找不到任何答案。经过几个小时尝试不同的事情后,我想我会尝试从头开始创建一个新的heroku应用程序并推送我的应用程序(对其他人有效),基本上是刚刚开始。

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

很奇怪,根据Heroku的推荐,我尝试在本地创建一个新的数据库,然后运行我的迁移。

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

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

我尝试删除了一些宝石,但仍然是同样的错误。

rake:db看看除迁移文件以外的任何文件吗?这可能是一个关系问题吗?

有关如何解决此问题的任何其他建议?

1 个答案:

答案 0 :(得分:1)

您是否正在访问/使用迁移中的任何模型进行任何数据更新?你在配置/初始化器中使用任何模型吗? rake db:migrate加载rails环境,所以如果你尝试访问一个不存在的模型,它会把这个错误吐出来......