3

在 Hartl 的 Rails 教程(第 2 版)的第 9 章末尾,使用 rake 任务填充 db 时遇到错误。最终解决了它,但不知道出了什么问题。如果其他人遇到此错误,这就是我所做的。如果有人知道出了什么问题,请发表评论——我很想知道。谢谢!

运行这些命令

$ git push heroku
$ heroku run rake db:migrate
$ heroku pg:reset SHARED_DATABASE --confirm <name-heroku-gave-to-your-app>
$ heroku run rake db:populate

然后,得到这个错误:

rake aborted!
PGError: ERROR:  relation "users" does not exist
:             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 = '"users"'::regclass
               AND a.attnum > 0 AND NOT a.attisdropped
             ORDER BY a.attnum

Tasks: TOP => db:populate
(See full trace by running task with --trace)

无法弄清楚出了什么问题。然后遇到了这篇文章: Heroku Postgres Error: PGError: ERROR: relationship "organizations" does not exist (ActiveRecord::StatementInvalid)

从那以后,我只运行了这些命令:

heroku run rake db:reset
heroku run rake db:migrate
heroku run rake db:populate

现在该应用程序正在运行。我仍然不清楚为什么在重置 SHARED_DATABASE 时出现该错误......如果有人知道,很想知道。

4

3 回答 3

7

你的步骤不正常。他们应该是:

$ git push heroku
$ heroku pg:reset SHARED_DATABASE --confirm <name-heroku-gave-to-your-app>
$ heroku run rake db:migrate
$ heroku run rake db:populate

给@rjz 的帽子提示

于 2012-05-07T14:01:14.200 回答
6

我遇到了完全相同的问题,但以正确的顺序执行了命令。在所有 rake 命令之后必须运行以下命令,然后它工作正常。

$ heroku restart
于 2012-07-13T16:16:13.500 回答
2

如果其他人遇到此问题,则存在具有相同症状的不同问题。如果您有一个未迁移的表,该表还具有在 application.rb 中设置的 AR 观察者,则 rake 将不会加载,因为它会尝试加载正在观察的底层模型。您必须迁移,然后将 AR 观察者添加到 application.rb。

于 2012-07-14T18:02:27.443 回答