1

最近、postgresql データベースをリモート サーバーに移行しました。以前は、Django を実行していたのと同じマシン上にありました。マシンの負荷を軽くするために、私は動くことに決めました。

しかし、私はいくつかのトラブルに遭遇しました。syncdb を実行すると、テーブルがリモート データベースと同期されました。テーブルが実際に同期されているかどうかを確認し、それらがそこにあることを確認しました。テーブル内にはデータがありません。まだデータを入力していません。しかし、Django の管理ページにアクセスすると、なぜかローカル データベースの古いデータが読み込まれます。

この振る舞いは非常に奇妙だと思います。ローカル データベースを削除することにしましたが、次のエラーが発生しました。

FATAL:  database "django_db" does not exist 

テーブルはすべてリモート データベース上にあるため、これは奇妙です。ローカル データベースとリモート データベースの両方が django_db と呼ばれます。それが問題でしょうか?

これは私のsettings.pyにあるものです

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
    'NAME': 'django_db',                      # Or path to database file if using sqlite3.
    'USER': 'django_login',                      # Not used with sqlite3.
    'PASSWORD': 'password',                  # Not used with sqlite3.
    'HOST': 'XX.XXX.X.XX',                      # Set to empty string for localhost. Not used with sqlite3.
    'PORT': '5432',                      # Set to empty string for default. Not used with sqlite3.
},
}
4

2 に答える 2

1

私はそれを理解しました、私は実際に私が取り組んでいたサーバーを再起動しなければなりませんでした. HTTP サーバーを再起動するだけでは、その仕事はできないようです。以前にコンパイルされたコードである .pyc ファイルは、サーバーを再起動しない限り残ります。

于 2013-06-19T17:59:53.440 に答える
0

新しいデータベースを指すように settings.py ファイルを更新する必要があります。これはDATABASESディクショナリによって制御されます。また、追加のヒントとして、システムを更新してdj_database_urlを使用することをお勧めします。

DATABASES = {'default': dj_database_url.config()}

これにより、データベースのパスワードがバージョン管理されなくなります。次に、新しいデータベースの情報を含む DATABASE_URL という名前の ENV VAR を作成する必要があります。詳細については、ドキュメントまたは Google を参照してください。

于 2013-06-19T14:14:42.903 に答える