代码之家  ›  专栏  ›  技术社区  ›  tapas kumar Mahanta

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

  •  -2
  • tapas kumar Mahanta  · 技术社区  · 9 年前

    我正在尝试在heroku服务器上部署我的django应用程序,我遵循了本网站的说明 https://devcenter.heroku.com/articles/getting-started-with-python#introduction .直到“heroku open”命令才正常工作。当我来到需要使用“heroku run python manage.py syncdb”命令托管数据库的部分时,它未能显示消息“OperationalError:无法连接到服务器:连接被拒绝” 服务器是否在主机“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 我尝试了所有的解决方案,包括在postgresql中编辑“listen_address”=“*”和tcpip_socket=“true”。conf并在pghba中编辑ipv4和v6值。conf到 主机所有127.0.0.1 255.255.0.1信任 主机所有10.0.0.99/32 md5 主机所有0.0.0.0/0。

    但它们都不起作用。我猜问题是因为heroku无法连接到我的本地postgres服务器。这很奇怪,因为我可以通过pgadmin访问postgres服务器。

    在django设置中也是如此。py看起来像这样

    数据库= { “默认”: { “ENGINE”:“django.db.backends.postgresql_psycopg2”, “名称”:“django_test”, “USER”:“postgres”, “PASSWORD”:“******”, 'HOST':'localhost',#或数据库所在的IP地址 '端口':'5432', } } 我是否需要更改此设置并改用heroku的数据库设置??

    1 回复  |  直到 7 年前
        1
  •  1
  •   Jared Mackey    9 年前

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

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