我开始使用 Play Framework,并有一个使用 H2 内存数据库在本地运行的玩具应用程序。我的 application.conf
文件如下所示:
db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:my-app-db"
db.default.user=sa
db.default.password=""
但是,当我尝试使用他们提供的 Postgres 数据库将应用程序部署到 Heroku 时,部署失败了:
org.postgresql.util.PSQLException: FATAL: password authentication failed for user "sa"
2013-05-17T01:22:18.982766+00:00 app[web.1]: at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:66)
2013-05-17T01:22:18.982827+00:00 app[web.1]: at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:125)
2013-05-17T01:22:18.983634+00:00 app[web.1]: at com.jolbox.bonecp.BoneCPDataSource.getConnection(BoneCPDataSource.java:112)
2013-05-17T01:22:18.982915+00:00 app[web.1]: at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:30)
2013-05-17T01:22:18.982665+00:00 app[web.1]: at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:108)
2013-05-17T01:22:18.982981+00:00 app[web.1]: at org.postgresql.jdbc3g.AbstractJdbc3gConnection.<init>(AbstractJdbc3gConnection.java:22)
2013-05-17T01:22:18.983376+00:00 app[web.1]: at java.sql.DriverManager.getConnection(DriverManager.java:200)
我的 Procfile
与入门指南中描述的完全一样:
web: target/start -Dhttp.port=${PORT} ${JAVA_OPTS} -DapplyEvolutions.default=true -Ddb.default.driver=org.postgresql.Driver -Ddb.default.url=${DATABASE_URL}
最佳答案
问题是这两个属性干扰了 Postgres:
db.default.user=sa
db.default.password=""
(Postgres 已经在 URL 中有了用户名和密码,如果您运行 heroku config
并查看 DATABASE_URL
属性,您会看到这一点。)
当我注释掉上面两行,再次推送到Heroku时,Postgres正常运行,H2在本地仍然运行。
关于postgresql - 为什么我的 Play/Heroku/Postgres 部署失败并出现密码错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16601365/