部署Django的到的Heroku(Psycopg2错误)(Deploying Django to

2019-06-24 11:15发布

所以,我从下面的Heroku入门指南和Django。 然而,当我运行以下命令:

heroku run python manage.py syncdb

我得到这个错误

psycopg2.OperationalError: could not connect to server: Connection refused
Is the server running on host "localhost" and accepting
TCP/IP connections on port 5432?

我认为这意味着该数据库中尚未设定...所以我手动添加shared_db选项,以及:

heroku addons:add shared-database:5mb

但是..我仍然得到同样的错误。 是什么赋予了?

Answer 1:

编辑:

作为@mipadi指出这里(http://stackoverflow.com/questions/13001031/django-heroku-settings-injection/13092534),它实际上是这么简单:

import dj_database_url

DATABASES = {'default' : dj_database_url.config() }

这工作,如果你有一个DATABASE_URL环境变量设置。 Heroku的:pg_promote得到你那里。 下面详细


请确保你有你的Heroku Postgres的

heroku addons:add heroku-postgresql:dev

第1步:找出你的数据库的URL

heroku config | grep POSTGRESQL

输出会是这个样子:

HEROKU_POSTGRESQL__URL:Postgres的://用户名:密码@主机:5432 /布拉布拉

第2步:从前面的步骤(如HEROKU_POSTGRESQL_ROSE_URL)抓斗的设置名称,并把它放在你的设置文件中,像这样

DATABASES = {'default': dj_database_url.config(default=os.environ["HEROKU_POSTGRESQL_ROSE_URL"])}

[更新]作为泰德指出,有促进颜色网址DATABASE_URL变量的方式:

heroku pg:promote HEROKU_POSTGRESQL_ROSE_URL

然后,您的数据库设置可以使用DATABASE_URL,而不是更奇特的彩色URLS

DATABASES = {'default': dj_database_url.config(default=os.environ["DATABASE_URL"])}

鲍勃是你的叔叔



Answer 2:

我把它通过添加以下代码的settings.py自己的工作,似乎是出于某种原因的Heroku没有添加对我来说....

通常,它总是添加在Heroku上的代码动态,但我想的Django 1.4后,它并没有因为某种原因做了。 或者,我只是做了什么。

反正这是代码只需将它添加到您的settings.py,它应该像以前一样工作。

import sys
import urlparse
import os


# Register database schemes in URLs.
urlparse.uses_netloc.append('postgres')
urlparse.uses_netloc.append('mysql')

try:

    # Check to make sure DATABASES is set in settings.py file.
    # If not default to {}

    if 'DATABASES' not in locals():
        DATABASES = {}

    if 'DATABASE_URL' in os.environ:
        url = urlparse.urlparse(os.environ['DATABASE_URL'])

        # Ensure default database exists.
        DATABASES['default'] = DATABASES.get('default', {})

        # Update with environment configuration.
        DATABASES['default'].update({
            'NAME': url.path[1:],
            'USER': url.username,
            'PASSWORD': url.password,
            'HOST': url.hostname,
            'PORT': url.port,
        })
        if url.scheme == 'postgres':
            DATABASES['default']['ENGINE'] = 'django.db.backends.postgresql_psycopg2'

        if url.scheme == 'mysql':
            DATABASES['default']['ENGINE'] = 'django.db.backends.mysql'
except Exception:
    print 'Unexpected error:', sys.exc_info()


Answer 3:

我的应用程序结构是关闭... Heroku的希望结构如下所示:

toplevel
  requirements.txt
  myapp
    manage.py
    all other django stuff


Answer 4:

我有同样的问题,这是我如何解决它

第一步:按照菲利普的第1步获取数据库名称(彩色)

第2步:

$ heroku pg:promote HEROKU_POSTGRESQL_<COLOR> 

导致输出

Promoting HEROKU_POSTGRESQL_<COLOR> to DATABASE_URL... done


Answer 5:

您需要添加到您的requirements.txt:

psycopg2

默认情况下,配置的Heroku Postgres的数据库,并注入代码到你的settings.py(https://devcenter.heroku.com/articles/django#postgres_database_config)。 这从环境变量DATABASE_URL读取,但需要安装psycopg2。



文章来源: Deploying Django to Heroku (Psycopg2 Error)