【问题标题】:Heroku - doesn't work "rake" command: PG::Error: ERROR: relation "roles" does not existHeroku - 不起作用“rake”命令:PG ::错误:错误:关系“角色”不存在
【发布时间】:2012-09-22 05:46:16
【问题描述】:

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

【问题讨论】:

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


【解决方案1】:

这是您在运行 Rolify 和迁移时会看到的常见错误。

你需要检查你的 Rolify 初始化文件config/initializers/rolify.rb。如果命令config.use_dynamic_shortcuts 未注释,则对其进行注释。推送您的更改,然后运行rake db:migrate。成功迁移后,您可以返回并取消注释该行。

问题是 rails 会加载初始化文件,如果数据库尚未迁移,use_dynamic_shortcuts 会抛出错误。

【讨论】:

    【解决方案2】:

    你确定你承诺了一切吗?尝试git status 然后git add . 然后再做git push heroku

    【讨论】:

      【解决方案3】:

      尝试运行

      heroku pg:reset
      

      它将尝试将您的数据库重置为正常状态。然后你就可以迁移和播种了。

      如果你不能迁移,你的迁移不正确,尝试应用架构:

      heroku rake db:schema:apply
      

      【讨论】:

      • 我收到了Resetting HEROKU_POSTGRESQL_JADE (DATABASE_URL)... done - 然后我尝试运行我的迁移并再次出现相同的错误消息。
      • 尝试应用架构而不是从头开始迁移(已编辑)
      【解决方案4】:

      听起来您可能在引用 Role 类的初始化程序(或类似的东西)中有代码 - 因为当环境启动时该表不存在(即使您正在尝试设置表!)它会产生一个错误。

      尝试删除引用 Role 类的代码,迁移数据库,然后将代码放回原处。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-09-10
        • 1970-01-01
        • 2016-03-18
        • 2014-05-07
        • 1970-01-01
        • 1970-01-01
        • 2012-07-16
        相关资源
        最近更新 更多