2012-04-07 8 views
25

新しいシステムに私のDjangoプロジェクトをインストールし、Django 1.4をインストールしました。私はmanage.py runserverまたはmanage.py syncdbを実行しようとするしかし、私は南からこのエラーを取得する: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' 

私は現在、SQLiteのを使用しています。私はこれがのDjango 1.4であると思うかもしれませんが、他のユーザーは私の問題を抱えていないようです。すべての私のパッケージは最新です。

答えて

20

settingsにはDATABASESが正しくありません。 'default'

+0

で説明したように、単に提供するデータベースを、それを解決し、それを促進するために

ありがとうございました、私は、私がローカル設定を使用するように私のホスト名をチェックしていた、と私のホスト名が私の新しいシステムに変更されたことを忘れてしまいました私のデータベースは設定されていませんでした。 –

+1

同じエラーが発生しています。あなたはその解決策を具体化できますか?ありがとう@ saul.shanabrook –

+2

提供されているリンクに従ってください。文書に最小限の作業例があります – ilvar

39

同じエラーメッセージが表示されますが、受け入れられた回答とは異なる原因と解決方法があります。短い答えは、をsettings.pyに加えることです。ここで

は完全な説明です:south/db/__init__.pyにトレース

は、私はPostGISのを使用する理由は、私のデータベースエンジンの名前がsouth/db/__init__.py

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 
} 

にハードコードされたリストに含まれていないということで、何のデータベースが検出されなかったことを示しています2.0ではWindows上で、かつてはdjangoのpostgisバックエンドに小さなパッチを適用しなければなりませんでした。私はソースからdjangoをインストールしなかったので、私はバックエンドのコピーを作成し、そのコピーに手動でパッチを適用しました。したがって、新しいバックエンドは別の場所にあり、その場所は上記のSouthのengine_modulesのキーのリストにありません。

幸いにも、SouthにはSOUTH_DATABASE_ADAPTERSという設定変数が用意されています。この変数は、各エイリアスの実際のデータベースエンジンを直接Southに伝えます。私は私の場合である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 
関連する問題