当我运行heroku run rake db:migrate
时,我会收到此错误:
rake aborted!
PG::Error: ERROR: relation "roles" does not exist
LINE 4: WHERE a.attrelid = '"roles"'::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 = '"roles"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum
Tasks: TOP => db:reset => environment
我还尝试重置数据库:heroku run rake db:reset
但是我遇到了与上面相同的错误。看起来命令heroku rake
不起作用。此外,我试图将我的整个本地数据库移动到Heorku - heroku db:push
- 这是有效的。但我需要进行迁移。
答案 0 :(得分:3)
这是运行Rolify和迁移时常见的错误。
您需要检查您的Rolify初始化文件config/initializers/rolify.rb
。如果取消注释命令config.use_dynamic_shortcuts
,则对其进行注释。推高您的更改,然后运行rake db:migrate
。成功迁移后,您可以返回并取消注释该行。
问题是rails加载了初始化文件,如果尚未迁移数据库,use_dynamic_shortcuts
将抛出错误。
答案 1 :(得分:0)
你确定你承诺了一切吗?然后尝试git status
然后再git add .
,然后再次git push heroku
。
答案 2 :(得分:0)
尝试运行
heroku pg:reset
它会尝试将您的数据库重置为一个理智的状态。然后你可以迁移和播种。
如果您无法迁移,mybe您的迁移不正确,请尝试应用架构:
heroku rake db:schema:apply
答案 3 :(得分:0)
听起来你可能在引用Role
类的初始值设定项(或类似的东西)中有代码 - 因为当环境旋转时表不存在(即使你正试图设置表!)它会产生错误。
尝试删除引用Role类的代码,迁移数据库,然后重新放入代码。