我花了几个小时搞清楚如何启动和运行数据库。我创建了一个新的rails应用程序,并希望将其部署到heroku。我按照heroku的指示(从sqlite3 - > postgresql切换)但它只是不起作用。
这是在我的database.yml文件中:
default: &default
adapter: postgresql
pool: 5
timeout: 5000
development:
<<: *default
database: myapp_development
test:
<<: *default
database: myapp_test
production:
<<: *default
database: myapp_production
url: <%= ENV['DATABASE_URL'] %>
我无法在数据库中创建或播种任何数据。有时它执行db:migrate,但即使这样它也不会创建任何东西。这是我跑步时得到的:
heroku run rake db:create
FATAL: permission denied for database "postgres"
DETAIL: User does not have CONNECT privilege.
有没有人知道如何解决这个问题?我不再有任何线索......
谢谢!
答案 0 :(得分:2)
您无法使用db:create在Heroku上创建数据库(您也不能删除它)。添加加载项(例如Heroku Postgres)时会创建数据库。您只能迁移和播种。如果你想重新开始,你可以使用pg:reset(而不是drop and create)
所以正确的顺序应该是:
如果你想重新开始
来自Heroku文档:https://devcenter.heroku.com/articles/heroku-postgresql
分配数据库的PostgreSQL用户无权创建或删除数据库。要删除并重新创建数据库,请使用pg:reset。
答案 1 :(得分:2)
默认情况下,您无需在heroku
上创建数据库。
只需运行heroku run rails db:migrate
,其他内容将由heroku
本身处理。
另外,database.yml
env。
Production
更改为以下内容
production:
<<: *default
database: myapp_production
username: myapp
password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %>
默认情况下,您的rails应用已分配Postgres addon
。
您可以通过在控制台中运行命令heroku addons
来检查这一点。
来源 -
答案 2 :(得分:2)
根据给定的堆栈跟踪,您似乎正在尝试在heroku上创建数据库,这反过来又会给您权限拒绝错误。
首先,您不需要运行
heroku run rake db:create
改为运行
heroku run rake db:migrate
它应该迁移失败的迁移。
要检查迁移的当前状态,请运行以下命令:
heroku run rake db:migrate:status
你提到的其他观点:
- &GT;我无法在数据库中创建或播种任何数据 如上所述,您无法创建数据库,因为heroku会为您执行此操作。 要在数据库中播种数据,请运行以下命令:
heroku run rake db:seed