2016-04-19 54 views
1

我試圖部署基於PostgreSQL的在Heroku我的瓶的應用程序,但我當我嘗試用db.create_all()創建表我不斷收到此錯誤:Heroku的拒絕連接到Postgres數據庫

(psycopg2.OperationalError) could not connect t 
rver: Connection refused 
    Is the server running on host "localhost" (127.0.0.1) and accepting 
    TCP/IP connections on port 5432? 

這裏是如何我的代碼如下所示:

app=Flask(__name__) 

app.config['SQLALCHEMY_DATABASE_URI']='postgres://kfgriimpfjecsv:Bk1*****[email protected]:5432/dd71doth8gopgh' 
db=SQLAlchemy(app) 
if __name__ == '__main__': 
    app.debug=True 
    app.run() 

我使用Heroku Toolbelt與Heroku服務器進行通信。此外,當我試試這個:

psql -p 5432 -h localhost 

我得到幾乎相同的錯誤:

psql: could not connect to server: Connection refused 
     Is the server running on host "localhost" (127.0.0.1) and accepting 
     TCP/IP connections on port 5432? 

我也試過ec2-23-21-215-184.compute-1.amazonaws.com代替localhost的URI,但得到了同樣的錯誤。

而且here是完整的回溯,我得到當我運行db.create_all():

任何想法,爲什麼連接被拒絕,如何解決這個問題?

+0

如果從CLI得到它爲好,那麼很明顯,無論是皮克沒有運行,它沒有監聽tcp,也沒有監聽ip:port組合。 –

+0

如果是linux,你應該檢查服務。它看起來並不像這兩個錯誤是相同的,僅僅因爲psql不能提供psycopg錯誤,來自cli的詳細錯誤日誌將會更有幫助。 其他的選擇是檢查服務的狀態,防火牆和端口本身。 正確的數據庫權限。 – manugupt1

+0

我通過添加回溯來編輯問題,但不知道如何檢查服務。我將不得不挖掘一下如何做到這一點。 – multigoodverse

回答

0

看來我只好一個sslmode參數附加到數據庫URI,所以改變第二線以下解決了這個問題:

app.config['SQLALCHEMY_DATABASE_URI']= "postgresql+psycopg2://kfgriimpfjecsv:Bk1*******[email protected]:5432/dd71doth8gopgh?sslmode=require" 
+1

提示:使用'os.environ ['DATABASE_URL']'獲取連接參數。 1)這是Heroku推薦的解決方案(閱讀http://12factor.net作爲背景)2)你不應該在你的代碼中放置證書,3)這樣做會讓你旋轉證書(通過'heroku pg:credentials --reset' )而無需重新部署代碼。 – bimsapi

+0

@bimsapi偉大的提示,謝謝! – multigoodverse

相關問題