1

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 を実行して移行する必要があります。

どうすればそれができるか知っている人はいますか?

ありがとう

4

0 に答える 0