9

だから私はdjangoでherokuのスタートガイドに従っています。ただし、このコマンドを実行すると、次のようになります。

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?

これは、dbがまだセットアップされていないことを意味すると思いました...そこで、shared_dbオプションも手動で追加しました。

heroku addons:add shared-database:5mb

しかし..それでも同じエラーが発生します。何が得られますか?

4

5 に答える 5

8

編集:

@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:// user:password @ host:5432 / blabla

ステップ2:前のステップから設定名(HEROKU_POSTGRESQL_ROSE_URLなど)を取得し、次のように設定ファイルに配置します

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

[更新]テッドが指摘したように、カラーURLをDATABASE_URL変数に昇格させる方法があります。

heroku pg:promote HEROKU_POSTGRESQL_ROSE_URL

データベース設定では、よりエキゾチックな色のURLではなくDATABASE_URLを使用できます。

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

ボブはあなたのおじです

于 2012-08-25T22:45:19.293 に答える
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()
于 2012-05-23T13:30:36.667 に答える
1

私のアプリの構造はオフでした...herokuは構造を次のようにしたいと考えています:

toplevel
  requirements.txt
  myapp
    manage.py
    all other django stuff
于 2012-05-21T03:12:28.443 に答える
1

私は同じ問題を抱えていました、これは私がそれを解決した方法です

ステップ1:フィリップのステップ1に従って、データベース名(色)を取得します

ステップ2:

$ heroku pg:promote HEROKU_POSTGRESQL_<COLOR> 

出力につながります

Promoting HEROKU_POSTGRESQL_<COLOR> to DATABASE_URL... done
于 2012-08-28T07:30:02.713 に答える
0

これをrequirements.txtに追加する必要があります。

psycopg2

デフォルトでは、HerokuはPostgresデータベースを構成し、settings.py(https://devcenter.heroku.com/articles/django#postgres_database_config)にコードを挿入します。これは環境変数DATABASE_URLから読み取りますが、psycopg2がインストールされている必要があります。

于 2012-05-15T22:16:30.363 に答える