我正在尝试在heroku服务器上部署我的django应用程序,我按照这个网站https://devcenter.heroku.com/articles/getting-started-with-python#introduction的说明。工作正常,直到“heroku open”命令。当我来到我需要主持的部分时我的数据库使用“heroku run python manage.py syncdb”命令,它显示消息“操作错误:无法连接到服务器:连接被拒绝” 服务器是否在主机“localhost”(127.0.0.1)上运行并且正在接受 端口5432上的TCP / IP连接?“。我尝试了很多修复,包括这里建议的Deploying Django app's local postgres database to heroku?和http://www.cyberciti.biz/tips/postgres-allow-remote-access-tcp-connection.html。我尝试了所有解决方案,包括编辑”listen_address“='*'和tcpip_socket =在postgresql.conf中'true'并编辑pg_hba.conf中的ipv4和v6值 托管所有127.0.0.1 255.255.0.1信任 主持所有10.0.0.99/32 md5 主持所有0.0.0.0/0。
但是没有一个工作。我猜这个问题出现了,因为heroku无法连接到我当地的postgres服务器。这很奇怪,因为我可以通过pgadmin访问postgres服务器。
并且在django settings.py中也是这样的
DATABASES = { '默认': { 'ENGINE':'django.db.backends.postgresql_psycopg2', 'NAME':'django_test', 'USER':'postgres', '密码':'******', 'HOST':'localhost',#或您托管数据库的IP地址 'PORT':'5432', } } 我是否需要更改此设置并使用heroku的数据库设置?
答案 0 :(得分:1)
localhost
指向服务器而不是本地计算机。原因是因为运行django代码的服务器将尝试解析dns名称localhost
,并且它有一个指向127.0.0.1
的指针,该指针是解析该名称的服务器本地的。这不会指向您正在使用的计算机。
您需要在heroku上获取postgres的实例,并将HOST: 'xxx.xxx.xxx.xxx
更改为django设置中新postgres实例的IP地址。