我正在使用postgresql并且一直在我的本地开发环境下运行。我将我的应用程序部署到Heroku,现在我需要设置heroku来使用数据库,就像我在本地一样。
在本地,我会运行这个:
rake db:create
rake db:migrate
在heroku上,我尝试了同样的事情:
heroku run rake db:create
然而,这会返回此错误:
FATAL: permission denied for database "postgres"
DETAIL: User does not have CONNECT privilege.
Couldn't create database for {"adapter"=>"postgresql", "username"=>"stegjyxfak", "password"=>"wB-Yfh450945jI5UrnFjxdwZ_o4N5", "port"=>5432, "database"=>"d64phj348vgdg5hm", "host"=>"ec2-107-20-191-205.compute-1.amazonaws.com"}
我应该运行什么来设置我的heroku数据库?我正在使用Rails 4.0,如果它是相对的。
答案 0 :(得分:13)
您应该使用migrate
代替create
:
heroku run rake db:migrate
https://devcenter.heroku.com/articles/getting-started-with-rails4#deploy-your-application-to-heroku
答案 1 :(得分:1)
heroku上不允许使用直接破坏性命令( drop 和 create )。但是,如果您可以放弃所有数据,则可以使用pg:reset
重置数据库。
其他所有更改都应使用db:migrate
完成。如果您的迁移不再在完整堆栈中运行,您也可以使用db:schema:load
但请注意,如果create_table
设置了force: true
或force: :cascade
,这可能具有破坏性。< / p>