2

Django が settings.py ファイルで指定したデータベース エンジンを使用せず、代わりに value を使用する理由がわかりませんdjango.db.backends.dummy

/project/app/settings.py にあるsettings.pyファイルの DB 部分は次のとおりです。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'my_db_name',
        'USER': 'my_user',
        'PASSWORD': 'my_pass',
        'HOST': '',
        'PORT': '',
    }
}

そして、これがDjangoデバッグログが示すものです:

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

私は、gunicorn と nginx を使用して、このサイトを運用しています。サイトは現在、デバッグ モードを True に設定しています。

UPDATE 1:実行するpython manage.py diffsettingsと、次のようになります(エンジンは正しいです):

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

UPDATE 2:これもシェルで試してみましたが、期待どおりに動作し、データベースに到達できます:

# python manage.py shell

>>> from myapp.models import MyModel
>>> test = MyModel.objects.all()
>>> test
# Outputs all objects from MyModel.

更新 3:何か奇妙なことが起こっています。この問題をデバッグするために、settings.py ですべてコメントアウトしINSTALLED APPS、nginx を再起動しましたが、Django はまだデバッグ ログにそれらを示しています。

INSTALLED_APPS  

('django.contrib.auth',
 'django.contrib.humanize',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'grappelli',
 'django.contrib.admin',
 'foureggs',
 'registration',
 'massadmin')

Django は、何らかのキャッシュ バージョンの settings.pyファイルを使用しているようです。

4

1 に答える 1

0

これが最終的に私の問題を解決したものです。本当の原因はわかりませんが、supervisord の実行と関係があるようです。

ドメインの下に 2 つの仮想環境を定義しました (つまり、/home/mydomain/www/env1 と /home/mydomain/www/env2)。元の質問で説明した問題は、env2.

問題を引き起こしているのはenv1であり、どういうわけかそのsettings.pyがenv2のsettings.pyの代わりに使用されていると最初に思いました。しかし、env1 の settings.py はまったく異なるように見えたので、おそらく問題ではありませんでした。

とにかく、ここに私が取った手順があります。同じ問題に遭遇している他の人へのいくつかの指針を与えるかもしれません:

  1. env1 (/home/mydomain/www/env1) を削除しました <-- これはおそらく問題とは関係ありませんが、環境は必要ないので削除しました

  2. これらのプロセスを強制終了しました:supervisord、nginx、gunicorn_django(つまりpkill supervisord

  3. Supervisord(bashスクリプトを実行してgunicorn_djangoプロセスを開始)とnginxを開始しました

サイトは期待どおりに機能するようになりました。

于 2013-02-12T12:03:23.257 に答える