2013-05-17 39 views
4

我開始使用Play框架,並使用H2內存數據庫在本地運行玩具應用程序。我application.conf文件看起來像這樣:爲什麼我的Play/Heroku/Postgres部署因密碼錯誤而失敗?

db.default.driver=org.h2.Driver 
db.default.url="jdbc:h2:mem:my-app-db" 
db.default.user=sa 
db.default.password="" 

然而,當我嘗試部署應用的Heroku,使用他們提供的Postgres數據庫,部署失敗:

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} 

回答

7

問題是這兩個屬性干擾Postgres:

db.default.user=sa 
db.default.password="" 

(Postgres的已經在URL中的用戶名和密碼,你可以看到,如果你運行heroku config並期待在DATABASE_URL屬性。)

當我註釋掉上面的兩行和推再次Heroku,Postgres正常工作,H2仍在當地工作。

+2

感謝您的分享。我不能相信這個問答只有一個月的時間......我的意思是,Play 2.x實際上並不成熟,文檔也很明智。這是我在第一次部署涉及數據庫時遇到的一個基本錯誤,同時遵循所有官方文檔。 – ripper234

相關問題