2012-04-07 4 views
25

방금 ​​내 장고 프로젝트를 새 시스템에 설치하고 장고 1.4를 설치했습니다. 내가 실행하려고 할 때 manage.py runserver 또는 manage.py syncdb 남쪽에서이 오류를 얻을 : 나는 현재 SQLite는 사용하고South + Django 1.4 데이터베이스 오류

Validating models... 

Unhandled exception in thread started by <bound method Command.inner_run of <django.contrib.staticfiles.management.commands.runserver.Command object at 0x1a67810>> 
Traceback (most recent call last): 
    File "/home/saul/.virtualenvs/canada/lib/python2.7/site-packages/django/core/management/commands/runserver.py", line 91, in inner_run 
    self.validate(display_num_errors=True) 
    File "/home/saul/.virtualenvs/canada/lib/python2.7/site-packages/django/core/management/base.py", line 266, in validate 
    num_errors = get_validation_errors(s, app) 
    File "/home/saul/.virtualenvs/canada/lib/python2.7/site-packages/django/core/management/validation.py", line 30, in get_validation_errors 
    for (app_name, error) in get_app_errors().items(): 
    File "/home/saul/.virtualenvs/canada/lib/python2.7/site-packages/django/db/models/loading.py", line 158, in get_app_errors 
    self._populate() 
    File "/home/saul/.virtualenvs/canada/lib/python2.7/site-packages/django/db/models/loading.py", line 64, in _populate 
    self.load_app(app_name, True) 
    File "/home/saul/.virtualenvs/canada/lib/python2.7/site-packages/django/db/models/loading.py", line 88, in load_app 
    models = import_module('.models', app_name) 
    File "/home/saul/.virtualenvs/canada/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module 
    __import__(name) 
    File "/home/saul/.virtualenvs/canada/lib/python2.7/site-packages/south/models.py", line 2, in <module> 
    from south.db import DEFAULT_DB_ALIAS 
    File "/home/saul/.virtualenvs/canada/lib/python2.7/site-packages/south/db/__init__.py", line 78, in <module> 
    db = dbs[DEFAULT_DB_ALIAS] 
KeyError: 'default' 

. 나는 이것 때문에Django 1.4 때문에, 다른 사용자가 내 문제가있는 것 같지 않은 것 같아요. 모든 패키지는 최신 버전입니다.

답변

20

settings에 올바른 DATABASES이 없습니다. 데이터베이스가 있어야합니다 'default'

+0

감사에 설명 된대로 승격하려면 그래서 내 데이터베이스가 설정되지 않았습니다. –

+1

동일한 오류가 발생합니다. 해결책을 자세히 설명해 주시겠습니까? 감사합니다 @ saul.shanabrook –

+2

제공된 링크를 따라 가십시오. 문서에 최소한의 작업 예제가 있습니다 – ilvar

39

나는 같은 오류 메시지가 있지만 다른 원인과 해결책을 수락 된 답변과 비교했습니다. 짧은 대답은 을 settings.py에 추가하는 것입니다. 여기

전체 설명입니다

south/db/__init__.py을 추적하는 것은 어떤 데이터베이스가 발견되지 않았 음을 보여주고, 내 데이터베이스 엔진의 이름은 내가 PostGIS와를 사용

engine_modules = { 
    'django.db.backends.postgresql_psycopg2': 'postgresql_psycopg2', 
    'django.db.backends.sqlite3': 'sqlite3', 
    'django.db.backends.mysql': 'mysql', 
    'django.db.backends.oracle': 'oracle', 
    'sql_server.pyodbc': 'sql_server.pyodbc', #django-pyodbc 
    'sqlserver_ado': 'sql_server.pyodbc', #django-mssql 
    'firebird': 'firebird', #django-firebird 
    'django.contrib.gis.db.backends.postgis': 'postgresql_psycopg2', 
    'django.contrib.gis.db.backends.spatialite': 'sqlite3', 
    'django.contrib.gis.db.backends.mysql': 'mysql', 
    'django.contrib.gis.db.backends.oracle': 'oracle', 
    'doj.backends.zxjdbc.postgresql': 'postgresql_psycopg2', #django-jython 
    'doj.backends.zxjdbc.mysql': 'mysql', #django-jython 
    'doj.backends.zxjdbc.oracle': 'oracle', #django-jython 
} 

south/db/__init__.py에 하드 코딩 된 목록에없는 것을있는 이유 Windows에서 2.0으로, 얼마 전에 django의 postgis 백엔드에 작은 패치를 적용해야했습니다. 소스에서 django를 설치하지 않았으므로 백엔드 복사본을 만들어 수동으로 패치 사본에 적용했습니다. 따라서 새 백엔드는 다른 위치에 있으며 그 위치는 위에 표시된 South의 engine_modules 키 목록에 없습니다.

남쪽에는 각각 별칭의 실제 데이터베이스 엔진을 South에 직접 알려주는 SOUTH_DATABASE_ADAPTERS이라는 설정 변수가 있습니다. 내 경우입니다에게 Heroku를 사용하는 사람들을 위해 settings.py

SOUTH_DATABASE_ADAPTERS = {'default':'south.db.postgresql_psycopg2'}

+0

이것은 나를 위해 일했습니다! –

+8

저의 경우, 제 경우에는''ENGINE ':'DATABASES'에'mysql.connector.django''가 있고 남쪽에는'SOUTH_DATABASE_ADAPTERS = { 'default': 'south.db.mysql'}'이 있습니다. MySQL 5.6 –

+0

이것은 나를 위해 일했다. –

4

에이 줄을 삽입 한 후 syncdb을 실행 할 수 있었다.

DATABASES['default'] = dj_database_url.config() 

그러나, ketError '기본'오류가 계속 나타납니다 : 나는 그들이 Heroku가 가이드에 지적으로 내가, 기본 데이터베이스 설정이 너무이 문제를 발견했다. 이는 데이터베이스가 프로비저닝되지 않아서 dj_database_url을 찾을 수 없어 혼란스러운 오류가 발생했기 때문입니다.

는 내가 로컬 설정을 사용하는 내 호스트 이름을 확인하는 것을 잊고, 내 호스트 이름이 나의 새로운 시스템으로 변경되었습니다, 다만 제공 데이터베이스를 해결하고 heroku postgresql

heroku addons:add heroku-postgresql:dev 
heroku pg:promote HEROKU_POSTGRESQL_BLUE