我正在尝试调试迁移数据库时遇到的问题。
我的应用程序运行没有问题,并将其推送到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看看除迁移文件以外的任何文件吗?这可能是一个关系问题吗?
有关如何解决此问题的任何其他建议?
答案 0 :(得分:1)
您是否正在访问/使用迁移中的任何模型进行任何数据更新?你在配置/初始化器中使用任何模型吗? rake db:migrate加载rails环境,所以如果你尝试访问一个不存在的模型,它会把这个错误吐出来......