Heroku - 不起作用“rake”命令:PG ::错误:错误:关系“roles”不存在

时间:2012-10-01 11:16:24

标签: ruby-on-rails ruby heroku migration rake

当我运行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 - 这是有效的。但我需要进行迁移。

4 个答案:

答案 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类的代码,迁移数据库,然后重新放入代码。