2015-12-23 24 views
0

所以我有一個完成的Django應用程序,現在我試圖將它上傳到Heroku去生產,雖然我遇到了一些問題。我一直在下面的Heroku的站點上的教程:難以將現有的django應用推向Heroku。數據庫配置不當

https://devcenter.heroku.com/articles/django-app-configuration#migrating-an-existing-django-project

https://devcenter.heroku.com/articles/getting-started-with-django#declare-process-types-with-procfile

雖然我遇到了這個錯誤:

settings.DATABASES is improperly configured. Please supply the ENGINE value. Check settings documentation for more details. 

這聽起來像我需要上傳我的數據庫到S3所以Heroku可以訪問它,所以我通過本教程做到了這一點

https://devcenter.heroku.com/articles/heroku-postgres-import-export#import

但我仍然收到錯誤。以下是我的一些設置。

Settings.py

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.postgresql_psycopg2', 
     'NAME': 'texchange', 
     'USER': 'joe', 
     'PASSWORD': '#######', 
     'HOST': 'localhost', 
     'PORT': '', 
    } 
} 


STATICFILES_DIRS = (
    ('/static/', 
    '/home/joe/Documents/exchange/Texchange/textchange/static/',), 
    ('/media/', 
    '/home/joe/Documents/exchange/Texchange/textchange/media/'), 
) 

MEDIA_ROOT = '/home/joe/Documents/exchange/Texchange/textchange/media/' 

MEDIA_URL = '/media/' 

STATIC_ROOT = '/home/joe/Documents/exchange/Texchange/textchange/static/' 

STATIC_URL = '/static/' 

# Parse database configuration from $DATABASE_URL 
import dj_database_url 
DATABASES['default'] = dj_database_url.config() 

# Enable Persistent Connections 
DATABASES['default']['CONN_MAX_AGE'] = 500 

我究竟在不理解?任何方向將不勝感激,因爲這是我第一次使用Heroku和S3上傳應用程序。

+0

發佈您在Heroku管理中設置的'DATABASE_URL'管理員 –

+0

現在它是默認開始。我試圖將其設置爲我上傳到S3的轉儲文件,但出現錯誤:DATABASE_URL無效。必須採用FOO = bar格式。 – Programmingjoe

+0

Heroku似乎沒有找到您的設置,因爲您顯然已經在發佈的代碼中配置了引擎。你能否顯示你的Procfile,以及顯示settings.py位置的文件佈局? –

回答

0

您在評論中提到,當您運行heroku local,這是一個完全不同的問題,當然你應該在你的問題開始提到一個問題,這個問題只發生。顯然,這不是關於「上傳你的應用程序到Heroku」,或者甚至關於Heroku沒有找到數據庫,因爲你甚至沒有在Heroku上運行,但在本地。

這個問題幾乎肯定會發生,因爲在您的本地環境中,您沒有DATABASE_URL,但您已致電dj_database_url,完全覆蓋現有的默認數據庫配置。

的兩種方法來解決這個問題要麼把保護周圍的呼叫:

if os.environ['DATABASE_URL']: 
    DATABASES['default'] = dj_database_url.config() 

,或者更好,完全刪除數據庫字典聲明並使用默認參數,該庫:

DATABASES = {'default': dj_database_url.config(default='postgres://joe:####@localhost/texchange')} 
+0

啊,是的,我的道歉。我遇到過這個問題,所以我忘記了這個細節。什麼是默認值應該代表的####?編輯:沒關係,這是默認的,如果我根本不聲明數據庫。我明白。 – Programmingjoe

相關問題