2014-04-22 52 views
0

定義試圖讓一個AWS RDS與Heroku的應用程序配置。我以前用過的Postgres,但是這是我第一次與RDS。我跟着他們的文檔這裏(https://devcenter.heroku.com/articles/amazon_rds),但是當我嘗試運行執行syncdb或訪問從Heroku的我收到以下錯誤dbshel​​l:NameError:名字「數據庫」不與AWS RDS

$ heroku run ./manage.py syncdb 
Running `./manage.py syncdb` attached to terminal... up, run.8947 
Traceback (most recent call last): 
File "./manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 453, in execute_from_command_line 
utility.execute() 
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute 
self.fetch_command(subcommand).run_from_argv(self.argv) 
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 263, in fetch_command 
app_name = get_commands()[subcommand] 
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 109, in get_commands 
apps = settings.INSTALLED_APPS 
File "/app/.heroku/python/lib/python2.7/site-packages/django/conf/__init__.py", line 53, in __getattr__ 
self._setup(name) 
File "/app/.heroku/python/lib/python2.7/site-packages/django/conf/__init__.py", line 48, in _setup 
self._wrapped = Settings(settings_module) 
File "/app/.heroku/python/lib/python2.7/site-packages/django/conf/__init__.py", line 132, in __init__ 
mod = importlib.import_module(self.SETTINGS_MODULE) 
File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module 
__import__(name) 
File "/app/rfp/settings.py", line 33, in <module> 
'amazon-rds-ca-cert.pem')} 
NameError: name 'DATABASES' is not defined 

好了,看起來是一個數據庫配置問題與設置。這裏是我的相關settings.py

import os 
import sys 
import dj_database_url 

if DEBUG: 
DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.sqlite3', 
     'NAME': os.path.join(PROJECT_ROOT, 'db.sqlite3'),    
    } 
} 

else: 
    dbconfig = dj_database_url.config() 

    if dbconfig: 
     DATABASES['default']['OPTIONS'] = { 
      'ssl': {'ca': os.path.join(os.path.dirname(__file__), 'etc', 'amazon-rds-ca-cert.pem')} 
    } 

然後在Heroku上我已經設置配置爲瓦爾和DATABASE_URL DEBUG:

DATABASE_URL:   mysql2://db_user:[email protected]_server/db?sslca=config/amazon-rds-ca-cert.pem 
DEBUG:     False 

.pem文件是在應用程序根目錄下有「等」文件夾。任何人看到我已經錯過了或設置此配置錯誤了一步?感謝

回答

0

你的主要問題是,你永遠不會設置你的DATABASESDEBUG = False。您可以設置一個變量dbconfig到您的數據庫設置,但你從來沒有你default數據庫。你需要的東西,如:

else: 
    dbconfig = dj_database_url.config() 

    if dbconfig: 
     DATABASES = {'default': dj_database_url.config()} # Add this 
     DATABASES['default']['OPTIONS'] = { 
      'ssl': {'ca': os.path.join(os.path.dirname(__file__), 'etc', 'amazon-rds-ca-cert.pem')} 
    } 

一旦你設置你的默認數據庫,那麼您可以編輯就可以了OPTIONS

編輯:

而且,它的價值,this answer說你不能使用Python構建SSL路徑。你需要對它進行硬編碼。

相關問題