2017-09-18 24 views
1

私はherokuに自分のアプリを配備しようとしています。主にデータベース構成によるものです。django - herokuにデータベースを追加中にエラーが発生しました

これは、これは私のlocal_settings.pyファイルで、

輸入OS BASE_DIR = os.path.dirname(os.path.dirname

import dj_database_url 

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

try: 
    from .local_settings import * 
except ImportError: 
    pass 

settings.pyファイルの一番下です(ファイル))

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.postgresql_psycopg2', 
     'NAME': 'test', 
     'USER': 'test', 
     'PASSWORD': 'postgres', 
     'HOST': 'localhost', 
     'PORT': 5432, 
    } 
} 

私はsuccessfuly heroku local webを実行することができます。

>>> import dj_database_url 
>>> dj_database_url.config() 

しかし、私は、heroku run python manage.py migrateを実行すると、それは私にエラーを与え、

django.db.utils.OperationalError: could not connect to server: Connection refused 
    Is the server running on host "localhost" (127.0.0.1) and accepting 
    TCP/IP connections on port 5432? 

私は実行し、heroku run python manage.py shell

そして実行し、私は辞書が私与えてもらいますデータベースに関する完全な情報

問題はどこですか?

答えて

1

あなたはファイルにDATABASES変数を定義しているが、あなたはlocal_settings.pyをインポートするとき、あなたのDATABASES設定がで上書きされている

import dj_database_url 
try: 
    from .local_settings import * 
except ImportError: 
    pass 

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

、その後、DATABASES設定を変更し、local_settings.py最初から設定をインポートしてみ開発価値最初にインポートを行い、次にDATABASESオプションを変更する必要があります。

個人的には、base_settings.pyにはデータベース以外のすべての設定を含めるようにしてから、local_settings全体をインポートするのではなく、heroku_settings.pyにインポートすることをおすすめします。

base_settingsdevelopment_settingsheroku_settings(またはproduction_settings)を保持すると、展開をより簡単に処理できます。

2

local_settingsファイルは展開しないでください。これはローカルでの使用のみのため、名前です。 gitリポジトリから除外する必要があります。

+0

なぜ展開するべきではないですか? – Luv33preet

+1

*ローカルで使用するためです。もう1つの答えは、dj_database_urlの内容全体を削除するプロダクションDBの設定を上書きすることです。 –

関連する問題