Django プロジェクトの実行中にデータベースをリセットしようとしていますが、問題が発生しています。Django は、データベースとモデルの間のマッピングにより、常にデータベースと対話しています。
モジュール reset_db を次のように使用しています。
from django.core import management
management.call_command('reset_db',router='default',interactive = False)
私はpostgresを使用していますが、このコマンドを実行すると、次のエラーが発生します:
OperationalError: database "XXX" is being accessed by other users
DETAIL: There are 1 other session(s) using the database.
psycopg2 からデータベースを削除しようとしましたが、まだこの問題があります。また、ブルートフォースを試し、すべての接続を強制終了する外部スクリプトを起動しました:
os.system("bash myscript.sh")
私のスクリプト:
psql -U myuser -d mybase -c "select pg_terminate_backend(pg_stat_activity.procpid) from pg_stat_activity where pg_stat_activity.datname='mybase';"
./manage.py reset_db --router=default --noinput
これはうまくいきました。ただし、データベースへのすべての接続を切断したため、アプリケーションは応答しません (これは論理的です)。
アプリケーションからすべてのベースをリセットする必要があります。たとえば、私の管理パネル (Django のものではない) には「データのリセット」ボタンがあり、クリックすると、すべてのデータを削除し、syncdb を実行して移行する必要があります。
どうすればそれができるか知っている人はいますか?
ありがとう