postgres服务器拒绝连接到heroku

Posted

技术标签:

【中文标题】postgres服务器拒绝连接到heroku【英文标题】:postgres server refuses to connect to heroku 【发布时间】:2016-08-18 13:32:41 【问题描述】:

我已经为我想在 Heroku 上部署的 gradle 应用程序设置了一个远程 postgresql 数据库。在我的机器上运行我的应用程序时,它工作正常。但是,我很难连接到我在 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 配置的 sn-p 配置类读取:

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

【问题讨论】:

您使用的是什么版本的 postgres 驱动程序?你的build.gradle 里有什么? 好问题。我刚刚研究了一下,我正在使用这个版本:'org.postgresql:postgresql:9.4-1206-jdbc42' 【参考方案1】:

这条消息:

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

建议您尝试连接到 Heroku 上 localhost 上的数据库,这肯定是不正确的。您能否展示一下您是如何在 Java 代码中配置数据库连接的?

【讨论】:

会的。我在上面的帖子中添加了我的yaml 文件的 sn-p,该文件由配置类读取。

以上是关于postgres服务器拒绝连接到heroku的主要内容,如果未能解决你的问题,请参考以下文章

将 Heroku Postgres 连接到 PowerBI

如何在 Heroku 中将 Kafka 连接到 Postgres

Docker- django 在连接到 postgres 时抛出错误:psycopg2.OperationalError:无法连接到服务器:连接被拒绝

Heroku Postgres 升级后 Flyway 无法连接到数据库

从 Spring Boot 连接到 Heroku Postgres

如何将 PyCharm 连接到 Heroku postgres 数据库