2015-09-07 285 views
2

我试图将一个webapp推送到Heroku,并且无法让Postgres接受TCP/IP连接。我已经完成了关于这个主题的所有问题/答案,但仍然无法解决这个问题。我是数据库/网络开发新手,任何帮助都非常感谢!如何配置PostgreSQL以允许TCP/IP连接?

在postgresql.conf中,我将监听地址变量从localhost更改为#listen_addresses = ‘*’。端口看起来正确:#port = 5432

我还添加了0.0.0.0pg_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 

我能够通过另一个数据库连接到psqlpsql -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,摇篮2.5的Java 1.8.0_51使用自制安装的所有

+1

的几件事情后'pg_hba.conf' /'PostgreSQL的考虑1)'listen_addresses'应该与你指定的2值未注释)配置应该在postgres中通过重新启动服务或psql'pg_reload_conf()'重新加载3)你没有在你的问题中指出你的应用程序的连接属性,所以试着检查它们,试着运行'psql -U yourAppUser -d yourDatabase -h hostnameAddressOrDNS'以检查它们。 –

+0

只是为了澄清:你是否试图使用[Heroku提供的数据库](https://elements.heroku.com/addons/heroku-postgresql)或者你正在运行一个你自己的?如果不是Heroku,这个其他Postgres数据库在哪里运行(本地,AWS等)? – codefinger

+0

@codefinger你是对的 - 我试图使用我自己的数据库。我会尝试使用Heroku的,看看它是如何工作的。 –

回答

2

这听起来像你正在运行你自己的独立Postgres数据库 - 这是正确的吗?如果你使用Heroku,可能性是 - 这不是一个好主意。

之一的Heroku的主要好处是它处理你的服务器维护/恢复/等你 - 这就是它的主要好处是=)

根据以上考虑,我建议您使用Heroku Postgres而不是运行您自己的Postgres数据库。它不仅是世界上最大的托管Postgres服务 - 它永远在之间,基本上没有bug,允许你做很多好东西(即时提供读奴隶/备份主人/等),甚至有一个慷慨的免费计划

确实没有理由不使用它=)

要获得的Heroku Postgres的规定,你可以简单地说:

$ heroku addons:add heroku-postgresql:dev 

,这将产生一个新的数据库为您,您的应用程序可以访问通过一个名为DATABASE_URL的预定义环境变量。只需将该URL提供给您的Web框架/应用程序代码,并将其连接到它 - 它包含用户名/密码/等,并且应该很容易工作。

你也可以想看看更多信息,入门指南:https://devcenter.heroku.com/articles/heroku-postgresql

+1

谢谢,这非常有帮助。我会试一试,并在我通过时检查。 –