我正在尝试将Web应用程序推送到Heroku,并且无法让Postgres接受TCP / IP连接。我已经完成了关于这个主题的所有问题/答案,但仍然无法解决这个问题。我是数据库/网站开发的新手,非常感谢任何帮助!
在postgresql.conf中,我将listen地址变量从localhost更改为#listen_addresses = ‘*’
。该端口看起来正确:#port = 5432
。
我还将0.0.0.0
添加到pg_hba.conf
(这是正确的顺序吗?):
# TYPE DATABASE USER ADDRESS METHOD
local all all trust
host all all 0.0.0.0/0 md5
host all all 127.0.0.1/32 trust
host all all ::1/128 trust
添加该地址后,当我在终端中调用postgres
时,它运行但有致命错误:
LOG: database system was shut down at 2015-09-06 16:21:43 PDT
LOG: MultiXact member wraparound protections are now enabled
LOG: database system is ready to accept connections
LOG: autovacuum launcher started
FATAL: database "admin" does not exist
当我尝试启动psql
时,同样的消息:
psql: FATAL: database "admin" does not exist
我能够通过另一个数据库psql
连接到psql -d template1
并创建了一个新的管理数据库。然后我创建了我的应用程序所需的数据库,并通过使用Gradle运行我的项目来确保它的功能。在此过程中,我已多次完全停止服务器,以查看更改是否有效。
Heroku日志仍然显示我在更改Postgres配置文件之前遇到的相同问题:
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.
当我访问http://localhost:5432/时,显示“未收到数据”,错误“无法加载网页,因为服务器未发送任何数据。”
感谢您的帮助!
版本:Mac OSX 10.10.5,PostgreSQL 9.4.4,Heroku 3.41.5,Gradle 2.5,Java 1.8.0_51。全部使用Homebrew安装。
答案 0 :(得分:2)
听起来像你在运行自己独立的Postgres数据库 - 这是正确的吗?如果你正在使用Heroku,可能性是 - 这不是一个好主意。
Heroku的主要好处之一是它可以为您处理服务器维护/恢复/等等 - 这是它的主要好处是=)
考虑到上述情况,我建议您使用Heroku Postgres而不是运行自己的Postgres数据库。它不仅是世界上最大的托管Postgres服务 - 它一直在永远,基本上没有bug,允许你做很多很棒的东西(立即提供读取奴隶/备份主人/等等) ),甚至都有一个慷慨的免费计划。
没有理由不使用它=)
要了解Heroku Postgres,您可以简单地说:
var backView = self.makeGrayView()
self.view.addSubview(backView)
这将为您生成一个新数据库,您的应用可以通过名为$ heroku addons:add heroku-postgresql:dev
的预定义环境变量访问该数据库。只需将该URL提供给您的Web框架/应用程序代码,并将其连接到它 - 它包含用户名/密码/等,并且应该可以轻松工作。
您可能还需要查看入门指南以获取更多信息:https://devcenter.heroku.com/articles/heroku-postgresql