如何清空Heroku数据库并重新填充

时间:2013-01-25 17:28:39

标签: ruby-on-rails database heroku

我已经看到了这个问题的一些答案,但似乎没有一个对我有用。 我意外地跑了heroku run rake db:seed两次。所以在我的数据库中有双重约会。 所以我想放弃桌子,重新移动并重新运行种子(这次一次;)) 到目前为止,我见过的解决方案告诉我要运行:heroku pg:reset SHARED_DATABASEheroku pg:reset SHARED_DATABASE --confirm <myAppName>。两者都不起作用。我得到的错误是:

    heroku pg:reset SHARED_DATABASE
/usr/local/lib/ruby/gems/1.9.1/gems/heroku-2.8.0/lib/heroku/pg_resolver.rb:125:in `parse_config': undefined method `each' for nil:NilClass (NoMethodError)
    from /usr/local/lib/ruby/gems/1.9.1/gems/heroku-2.8.0/lib/heroku/pg_resolver.rb:116:in `parse_config'
    from /usr/local/lib/ruby/gems/1.9.1/gems/heroku-2.8.0/lib/heroku/pg_resolver.rb:79:in `initialize'
    from /usr/local/lib/ruby/gems/1.9.1/gems/heroku-2.8.0/lib/heroku/pg_resolver.rb:34:in `new'
    from /usr/local/lib/ruby/gems/1.9.1/gems/heroku-2.8.0/lib/heroku/pg_resolver.rb:34:in `resolve_db'
    from /usr/local/lib/ruby/gems/1.9.1/gems/heroku-2.8.0/lib/heroku/command/pg.rb:70:in `reset'
    from /usr/local/lib/ruby/gems/1.9.1/gems/heroku-2.8.0/lib/heroku/command.rb:114:in `run'
    from /usr/local/lib/ruby/gems/1.9.1/gems/heroku-2.8.0/bin/heroku:14:in `<top (required)>'
    from /usr/local/bin/heroku:19:in `load'
    from /usr/local/bin/heroku:19:in `<main>'

我想做的就是放下桌子,然后用我的种子数据重新填充它。任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:0)

您可以直接进入heroku控制台并删除种子数据。

heroku run console

并删除表格中的所有项目。

答案 1 :(得分:0)

heroku pg:reset是正确的命令,但是你有一个旧版本的gem,你可能想升级。此外,使用最新的Postgres堆栈,SHARED_DATABASE配置变量不存在 - Heroku documentation表示该命令应为heroku pg:reset DATABASE

答案 2 :(得分:0)

我找到了一个似乎有效的答案。使用heroku run rake db:rollback,我可以删除表,然后迁移并重新设置数据。 感谢您的投入。

答案 3 :(得分:0)

我从Heroku获取数据库变量名称的方法是运行heroku config | grep POSTGRESQL。这将输出变量的名称及其URL。然后,您可以通过转到heroku pg:reset <DATABASE>(例如,可能是heroku pg:reset HEROKU_POSTGRESQL_CHARCOAL_URL)来删除数据库。然后,您应该能够再次迁移数据库并按常规方式填充数据库。