在使用rake任务填充数据库时,Hartl的Rails教程(第2版)第9章末尾遇到了错误。结束了它,但不知道出了什么问题。如果有其他人遇到这个错误,这就是我做的。如果有人知道出了什么问题,请发表评论 - 我很想知道。谢谢!
执行这些命令
$ 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: relation "organizations" does not exist (ActiveRecord::StatementInvalid)
由此,我刚刚运行了这些命令:
heroku run rake db:reset
heroku run rake db:migrate
heroku run rake db:populate
现在该应用正在运行。我还不清楚为什么在重置SHARED_DATABASE时出现错误...如果有人知道,很想知道。
答案 0 :(得分: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的帽子提示
答案 1 :(得分:6)
我遇到了完全相同的问题,但是按照正确的顺序执行了命令。在所有rake命令之后必须运行以下命令然后它工作正常。
$ heroku restart
答案 2 :(得分:2)
如果其他人遇到此问题,则存在具有相同症状的不同问题。如果您有一个未迁移的表也具有在application.rb中设置的AR观察者,则rake将不会加载,因为它会尝试加载正在观察的基础模型。您必须迁移,然后将AR观察者添加到application.rb。