【发布时间】:2016-08-12 02:59:16
【问题描述】:
我正在尝试在 Heroku 上部署基于 PostgreSQL 的 Flask 应用程序,但是当我尝试使用 db.create_all() 创建表时,我不断收到此错误:
(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*****G@localhost: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?
我也尝试在 URI 中使用 ec2-23-21-215-184.compute-1.amazonaws.com 而不是 localhost,但得到了同样的错误。
here 是我运行 db.create_all() 时得到的完整回溯:
知道为什么连接被拒绝以及如何解决这个问题吗?
【问题讨论】:
-
如果你也从 cli 获取它,那么显然 pg 没有运行,它没有监听 tcp,或者它没有监听那个 ip:port 组合。
-
如果是 linux 你应该检查服务。看起来这两个错误并不相同,只是因为 psql 不能给出 psycopg 错误,所以来自 cli 的详细错误日志会更有帮助。其他替代方法是检查服务、防火墙和端口本身的状态。对数据库也有适当的权限。
-
我通过添加回溯编辑了问题,但不确定如何检查服务。我将不得不深入研究如何做到这一点。
-
查看 Heroku 文档的 SSL 部分 (devcenter.heroku.com/articles/…)。
-
@c0dem4gnetic 这是一个线索,但我认为我是从服务器内部运行的。我的应用程序文件已部署,我在 bash 中键入该代码,我从计算机终端使用
heroku run bash打开该代码。服务器不认为我给 bash 的命令是内部连接吗?我认为“外部”意味着如果我在本地运行脚本并指向远程数据库。
标签: python postgresql ssl heroku