2015-09-07 280 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

謝謝,這非常有幫助。我會試一試,並在我通過時檢查。 –