将Django app的本地postgres数据库部署到heroku?

时间:2013-07-22 00:37:02

标签: django heroku django-database django-deployment

我无法将我的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:连接被拒绝服务器是否在主机“localhost”(127.0.0.1)上运行并接受端口5432上的TCP / IP连接?

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

任何人都知道我在这里做错了吗?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

  1. 允许远程postgres访问您的本地数据库。 example
  2. 将设置文件更改为以下内容:
  3. DATABASES = {

      '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并更改您的设置以使用该数据库。

相关问题