2016-08-18 238 views
0

我已經爲我想在Heroku上部署的gradle應用設置了一個遠程postgresql數據庫。在我的機器上運行我的應用程序時,它工作正常。然而,我很難連接到我在Heroku上設置的數據庫,所以我想我只是試圖連接到我的遠程數據庫。這是在我的應用程序日誌中出現了錯誤:postgres服務器拒絕連接到heroku

2016-08-18T13:28:12.606715+00:00 app[web.1]: [JarClassLoader] INFO: findResource(): unable to locate "org/postgresql/translation/messages_en.properties" 
2016-08-18T13:28:12.609362+00:00 app[web.1]: Exception in thread "main" java.lang.reflect.InvocationTargetException 
2016-08-18T13:28:12.609487+00:00 app[web.1]: at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
2016-08-18T13:28:12.609542+00:00 app[web.1]: at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
2016-08-18T13:28:12.609642+00:00 app[web.1]: at java.lang.reflect.Method.invoke(Method.java:498) 
2016-08-18T13:28:12.609715+00:00 app[web.1]: at com.simontuffs.onejar.Boot.main(Boot.java:161) 
2016-08-18T13:28:12.609970+00:00 app[web.1]: Caused by: org.postgresql.util.PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections. 
2016-08-18T13:28:12.610011+00:00 app[web.1]: at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:239) 
2016-08-18T13:28:12.610060+00:00 app[web.1]: at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:66) 
2016-08-18T13:28:12.610112+00:00 app[web.1]: at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:127) 
2016-08-18T13:28:12.610162+00:00 app[web.1]: at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:29) 
2016-08-18T13:28:12.610440+00:00 app[web.1]: at org.postgresql.Driver.connect(Driver.java:282) 
2016-08-18T13:28:12.610602+00:00 app[web.1]: at net.bethydiakabana.mbta.MbtaApplication.run(MbtaApplication.java:79) 
2016-08-18T13:28:12.611050+00:00 app[web.1]: Caused by: java.net.ConnectException: Connection refused 
2016-08-18T13:28:12.611072+00:00 app[web.1]: at java.net.PlainSocketImpl.socketConnect(Native Method) 
2016-08-18T13:28:12.611122+00:00 app[web.1]: at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) 
2016-08-18T13:28:12.611146+00:00 app[web.1]: at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) 
2016-08-18T13:28:12.611170+00:00 app[web.1]: at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 
2016-08-18T13:28:12.611286+00:00 app[web.1]: at org.postgresql.core.PGStream.<init>(PGStream.java:61) 
2016-08-18T13:28:12.611331+00:00 app[web.1]: ... 23 more 
2016-08-18T13:28:12.688094+00:00 heroku[web.1]: Process exited with status 1 
2016-08-18T13:28:12.703273+00:00 heroku[web.1]: State changed from starting to crashed 

我讀過,我需要改變的postgres配置文件的權限,但我一直得到同樣的錯誤。在windows機器上修復此問題的最佳方法是什麼?

編輯:

我已經成立了一個heroku postgres數據庫,看看是否能有所幫助。我不確定它是否仍然存在連接問題以及定位主類。它仍然值得連接到我原來的數據庫?這是我現在得到的錯誤:

Starting process with command `java -Ddw.server.connector.port=37275 -Ddw.database.user=mmcyajlpsbacac -Ddw.database.password=C6nrfQzuoS2ZEMDaTqVEssPDxa -Ddw.database.url=jdbc:postgresql://ec2-54-235-254-199.compute-1.amazonaws.com:5 432/d8hvhhr0h3hr8d?user=mmcyajlpsbacac&password=C6nrfQzuoS2ZEMDaTqVEssPDxa&sslmo de=require $JAVA_OPTS -jar build/libs/mbta-tweets.jar server config.yaml` 
2016-08-18T17:25:22.842387+00:00 app[web.1]: Setting JAVA_TOOL_OPTIONS defaults based on dyno size. Custom settings will override them. 
2016-08-18T17:25:22.846667+00:00 app[web.1]: Picked up JAVA_TOOL_OPTIONS: -Xmx350m -Xss512k -Dfile.encoding=UTF-8 
2016-08-18T17:25:23.220849+00:00 app[web.1]: Error: Could not find or load main class 432.d8hvhhr0h3hr8d?user=mmcyajlpsbacac&password=C6nrfQzuoS2ZEMDaTqVEssPDxa&sslmo 
2016-08-18T17:25:23.317758+00:00 heroku[web.1]: Process exited with status 1 
2016-08-18T17:25:23.331809+00:00 heroku[web.1]: State changed from starting to crashed 

這裏是我的yaml配置的片斷年代由配置類閱讀:

server: 
    type: simple 
    applicationContextPath: /application 
    adminContextPath: /admin 
    connector: 
    type: http 
    port: 8080 

database: 
    # the name of your JDBC driver 
    driverClass: org.postgresql.Driver 

    # the username 
    user: someusername 

    # the password 
    password: somepassword 

    # the JDBC URL 
    url: jdbc:postgresql://host:port/dbname?user=username&password=password 

這裏是我的procfile

web: java $JAVA_OPTS -Ddw.server.connector.port=$PORT -Ddw.database.user=$JDBC_DATABASE_USERNAME -Ddw.database.password=$JDBC_DATABASE_PASSWORD -Ddw.database.url=$JDBC_DATABASE_URL $JAVA_OPTS -jar build/libs/mbta-tweets.jar server config.yaml 
+0

你使用的是什麼版本的postgres驅動程序?你的'build.gradle'中有什麼? – codefinger

+0

好問題。我只是看着它,我用這個版本:''org.postgresql:postgresql:9.4-1206-jdbc42'' – unmatchedsock

回答

0

此消息:

Caused by: org.postgresql.util.PSQLException: Connection to localhost:5432 refused 

建議您嘗試連接到Heroku上的localhost上的數據庫,這當然不正確。你能說明你是如何在Java代碼中配置數據庫連接的嗎?

+0

會做。我已經添加了我的'yaml'文件的一個片段,這個文件可以在我上面的文章中的配置類中讀取。 – unmatchedsock