无法使用Play Framework 2.2.2连接到远程Heroku Postgres数据库

时间:2014-03-28 12:17:00

标签: database postgresql heroku playframework connect

我有一个Heroku帐户,我创建了一个应用程序和一个Heroku-Postgres数据库。 我已将应用程序提交到Heroku云,但我无法访问我创建的数据库。

我正在使用play,当我在本地数据库中连接项目时,application.conf配置为:

db.default.driver=org.postgresql.Driver
db.default.url="jdbc:postgresql://localhost:5432/postgres"
db.default.user=postgres
db.default.password=password

在本地运行我的服务器,它运行正常。

在我将我的应用程序上传到Heroku之前,我更改了此文件以访问我的Heroku-Postgres数据库:

db.default.driver = org.postgresql.Driver db.default.url = “JDBC:在PostgreSQL:// URL:5432 / DATABASE_NAME用户名=&安培;密码= PASS&安培; SSL =真安培; sslfactory = org.postgresql.ssl.NonValidatingFactory”

不再需要用户和密码字段。我已经在名为“Procfile”的项目的根目录中创建了一个文件:

web: target/universal/stage/bin/playsense -Dhttp.port=${PORT} -DapplyEvolutions.default=true -Ddb.default.driver=org.postgresql.Driver -Ddb.default.url=${DATABASE_URL}

我在文档中发现了这一点。我不明白为什么它没有连接到我的数据库。 我使用pgAdminIII和DB凭据,它工作正常。

这是缺失/错误的东西,我不知道是什么。

有人能帮助我吗?提前谢谢!

1 个答案:

答案 0 :(得分:1)

在Heroku上运行时,您可能需要取消设置db.default.userdb.default.password配置参数。但我不确定这样做的简单方法。所以我通常做的是不在conf/application.conf中设置它们,而是做一些像:

db.default.driver=org.postgresql.Driver
db.default.url="postgres://postgres:password@localhost:5432/postgres"
db.default.url=${?DATABASE_URL}
#db.default.user=postgres
#db.default.password=password

它提供了一个默认的db.default.url,但如果设置了DATABASE_URL,则用{{1}} env var覆盖它。