虽然在 heroku postgres 上部署 django 应用程序不起作用

while deplyoing django app on heroku postgres doesn't work

我正在尝试在 heroku 服务器上部署我的 django 应用程序,我按照本网站 https://devcenter.heroku.com/articles/getting-started-with-python#introduction 的说明进行操作。它工作正常,直到 "heroku open" command.When 我来到了这个部分在我需要使用“heroku 运行 python manage.py syncdb”命令托管我的数据库的地方,它未能显示消息“OperationalError:无法连接到服务器:连接被拒绝 服务器 运行 是否在主机 "localhost" (127.0.0.1) 上并接受 TCP/IP 端口 5432 上的连接?”。我尝试了很多修复,包括此处建议的 Deploying Django app's local postgres database to heroku? and http://www.cyberciti.biz/tips/postgres-allow-remote-access-tcp-connection.html。我尝试了所有解决方案,包括编辑 "listen_address" = '*' 和 tcpip_socket='true' in postgresql.conf 并编辑 pg_hba.conf 中的 ipv4 和 v6 值 host all all 127.0.0.1 255.255.0.1 信任 托管所有所有 10.0.0.99/32 md5 托管所有所有 0.0.0.0/0 .

但其中 none 有效。我猜问题的出现是因为 heroku 无法连接到我的本地 postgres server.This 很奇怪,因为我能够通过 pgadmin 访问 postgres 服务器。

而且在 django 中 settings.py 看起来像这样

数据库 = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'django_test', 'USER': 'postgres', 'PASSWORD': '******', 'HOST': 'localhost', # 或您的数据库所在的 IP 地址 'PORT': '5432', } } 我需要更改它并改用 heroku 的数据库设置吗??

服务器上的

localhost 指向服务器而不是您的本地计算机。原因是因为服务器 运行 你的 django 代码将尝试解析 dns 名称 localhost 并且它有一个指向 127.0.0.1 的指针,它在解析该名称的服务器本地。这不会指向您正在使用的计算机。

您需要在 heroku 上获取一个 postgres 实例,并在您的 django 设置中将 HOST: 'xxx.xxx.xxx.xxx 更改为您的新 postgres 实例的 IP 地址。