2016-06-14 113 views
0

Django的新手!Django Postgresql配置错误:配置不正确:settings.DATABASES

在从sqlite3切换到postgresql的过程中,我试图按照链接中的步骤操作。

http://www.marinamele.com/taskbuster-django-tutorial/install-and-configure-posgresql-for-django

settings.py(加入数据库设置如下)

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.postgresql_psycopg2', 
     'NAME': get_env_variable('DATABASE_NAME'), 
     'USER': get_env_variable('DATABASE_USER'), 
     'PASSWORD': get_env_variable('DATABASE_PASSWORD'), 
     'HOST': '', 
     'PORT': '', 
    } 
} 
def get_env_variable(var_name): 
    try: 
     return os.environ[var_name] 
    except KeyError: 
     error_msg = "Set the %s environment variable" % var_name 
     raise ImproperlyConfigured(error_msg) 

在Django中壳

>>>from trydjango import settings 
>>>settings.DATABASES 
{'default': {'ENGINE': 'django.db.backends.dummy', 'AUTOCOMMIT': True, 
'ATOMIC_REQUESTS': False, 'NAME': '', 'CONN_MAX_AGE': 0, 'TIME_ZONE': None, 
'PORT': '', 'HOST': '', 'USER': '', 
'TEST': {'COLLATION': None, 'CHARSET': None, 'NAME': None, 'MIRROR': None}, 
'PASSWORD': '', 'OPTIONS': {}}} 

错误:

django.core.exceptions.ImproperlyConfigured:settings.DATABASES is improperly configured. 
Please supply the ENGINE value. Check settings documentation 
for more details. 

请帮我解决这个问题。

+0

将您从环境变量名/用户/密码。但是你有没有在任何地方设置这些环境变量? –

+0

是的!我已经设定。 – Reck

+0

我的问题已解决。谢谢!! – Reck

回答

0

有在settings.DATABASES配置错误

settings.py(该数据库目前的设置)

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.postgresql_psycopg2', 
     'NAME': 'myproject', 
     'USER': 'myprojectuser', 
     'PASSWORD': 'password', 
     'HOST': 'localhost', 
     'PORT': '', 
    } 
} 

,并有与$ DATABASE_URL 数据库配置一些错误已被修正为

#Update database configuration with $DATABASE_URL. 
db_from_env = dj_database_url.config(conn_max_age=500) 
DATABASES['default'].update(db_from_env) 

使用

然后施加迁移3210
python manage.py makemigrations 
python manage.py migrate 

解决了这个问题。

现在在Django数据库配置外壳

>>> from trydjango.settings import DATABASES 
>>> DATABASES 
{'default': {'ENGINE': 'django.db.backends.postgresql_psycopg2', 
'AUTOCOMMIT': True, 'ATOMIC_REQUESTS': False, 'NAME': 'myproject', 
'CONN_MAX_AGE': 0, 'TIME_ZONE': None, 'OPTIONS': {}, 'HOST': 'localhost', 
'USER': 'myprojectuser', 'TEST': {'COLLATION': None, 'CHARSET': None, 
'NAME': None, 'MIRROR': None}, 'PASSWORD': 'password', 'PORT': ''}} 

完成

0

由于代表回答而不是评论。

你的settings.py表明这一点: '引擎': 'django.db.backends.postgresql_psycopg2' 但你的shell输出显示: '引擎': 'django.db.backends.dummy'

你确定你有一切配置正确?

+0

这是由于不正确的配置设置。DATABASES – Reck

+0

反正,我的问题已解决。谢谢!! – Reck