1

実行するpython manage.py runserverと、次のエラーが表示されます。

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

ここに私のsettings.pyがあります:

 DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'foureggs',
        'USER': 'myuser',
        'PASSWORD': 'mypass',
        'HOST': '',
        'PORT': '',
    }
}

ここに同じ問題の質問があります。答えは、「設定に「デフォルト」という名前のデータベースがあるはずです」と述べています。私は本当にそれに従っていません。私のデータベース名は「foureggs」なので、明らかにそれを使いたいです。

更新:python manage.py diffsettingsの出力が表示されますが、これは正しくありません(関連する DATABASE 行のみを貼り付けると、残りの設定は問題ないように見えます)。

DATABASES = {'default': {'ENGINE': 'django.db.backends.dummy', 'TEST_MIRROR': None, 'NAME': '', 'TEST_CHARSET': None, 'TIME_ZONE': 'UTC', 'TEST_COLLATION': None, 'PORT': '', 'HOST': '', 'USER': '', 'TEST_NAME': None, 'PASSWORD': '', 'OPTIONS': {}}}

私のプロジェクトには設定ファイルが 1 つしかなく、それは正しい app ディレクトリにあります。上記の DATABASE 行はどこから来たのですか?

更新 2: 何が問題なのかわかりましたHeroku 導入ガイドsettings.pyの指示に従って追加したのは、これらの 2 行です。それらをコメントアウトすると、すべて正常に動作します。今、なぜそれが問題を引き起こしているのかを理解する必要があります。

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

5 に答える 5

2

代わりに、Heroku構成を次のように設定することでこれを解決しました。

# Parse database configuration from $DATABASE_URL
import dj_database_url

dbconfig = dj_database_url.config()
if dbconfig:
    DATABASES['default'] =  dbconfig

# Honor the 'X-Forwarded-Proto' header for request.is_secure()
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
于 2013-02-26T18:23:16.687 に答える
1
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'foureggs',
        'USER': 'myuser',
        'PASSWORD': 'mypass',
        'HOST': '',
        'PORT': '',
    }
}

を入力する必要があります。そうしないHOSTと、 django はデータベース サーバーの場所を認識できません。PORTsqlite を使用している場合のみ、それらを空にすることができます。

postgreql の場合、デフォルトのポートは5432. サーバーを同じマシンで実行している場合は'localhost'、キーに使用し'HOST'ます。それ以外の場合は、データベース サーバーの IP アドレスを入力します。

于 2013-01-27T19:41:10.290 に答える
0

この問題はどうやらサウスではなく、DB バックエンドに関係しているようです。

  1. あなたはここから始めることができます: 「settings.DATABASESが正しく構成されていません」エラーがdjango 1.4でsyncdbを実行し、関連する質問

  2. 前述の回答がうまくいかない場合は、まず psycopg2 ライブラリがインストールされているかどうか、および sys.path にあるかどうかを確認してください。インストールされていない場合は、Psycopg2 ライブラリのインストール手順をここで確認してください。

  3. その後、最終的に ENGINE 設定を次のように変更できます。このようにして、何らかの理由で組み込みエンジンが機能しない場合は、組み込みエンジンをバイパスできます。

于 2013-01-27T10:46:30.993 に答える
0

Herokuの指示に従った後、この問題が発生しました。これらの行が原因であることは正しいです。

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

これにより、DATABASES の値が、django.db.backends.dummy などのエンジンを持つ dj_database_url パッケージで使用されるデフォルト値に戻ります。これらの行でこれを交換すると、動作するはずです。

# Parse database configuration from $DATABASE_URL
import dj_database_url
DATABASES['default'] = dj_database_url.config(default='postgres://localhost/foureggs')

ただし、Heroku では機能しないため、これを Heroku にデプロイしたくはありません。私が見つけた修正は、仮想環境を使用していることを前提としています。その場合は、仮想環境のフォルダーに移動し、bin ディレクトリ (cd $VIRTUAL_ENV/bin) に移動し、「postactivate」というファイルを追加して、次の行を保存します。

export DATABASE_URL='postgres://localhost/foureggs'

これで、仮想環境をアクティブ化するたびに、その値で開始されます。

于 2014-04-07T01:41:17.140 に答える