1

我没有成功地将我的 django 应用程序部署在 heroku 上以使用我的本地 postgres 数据库。

我的数据库设置如下:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'mydb',
        'USER': 'foo',
        'PASSWORD': 'bar',
        'HOST': 'localhost',
        'PORT': '',
    }
}

一切都在本地运行良好。按照https://devcenter.heroku.com/articles/django的说明,我将以下代码添加到我的设置文件底部:

import dj_database_url
DATABASES = {'default': dj_database_url.config(default='postgres://foo:bar@localhost/mydb')}
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

但是,这会产生以下错误:

OperationalError at / could not connect to server: Connection refused 服务器是否在主机“localhost”(127.0.0.1) 上运行并接受端口 5432 上的 TCP/IP 连接?

我的 django 应用程序在 Heroku 上运行良好,除非它需要连接到数据库,这是它引发此错误的地方。

有人知道我在这里做错了什么吗?

4

2 回答 2

1

简而言之,您当前的配置将数据库主机定义为localhost您应该将其指向您的主机公共 IP(或完全限定的域名)。

但这似乎是一种反模式。你真的应该使用 Heroku 的开发数据库来处理这些东西,如果你有任何本地数据要导入那里,只需进行数据库转储并加载它。

于 2013-07-22T07:39:29.983 回答
0
  1. 允许远程 postgres 访问您的本地数据库。例子
  2. 将设置文件更改为如下内容:

数据库 = {

  'default': {
      'ENGINE': 'django.db.backends.postgresql_psycopg2',
      'NAME': 'your db name',
      'USER': 'your username',
      'PASSWORD': 'password',
      'HOST': 'Your computer's IP',
      'PORT': '6122',
  }

或者您必须将本地数据库克隆到heroku postgres并更改您的设置以使用该数据库。

于 2013-07-22T00:45:11.683 回答