新しいモデルを追加してステージング サーバーにプッシュし、syncdb を実行してテーブルを作成すると、ロックされます。「テーブルphotos_photousertagの作成」まで取得し、postgresの出力には「photos_photousertag_id_seq」の作成に関する通知が表示されますが、それ以外の場合はどちらにも何も表示されません。syncdb プロセスを ctrl+c できず、ここからどのルートを取るべきかわかりません。他の誰かがこれに遭遇しましたか?
3 に答える
私もこれを経験したばかりで、Djangoとは関係のない、その特定のテーブルの単純な古いロックであることが判明しました。それがクリアされると、同期はうまくいきました。
同期が停止しているテーブルに対してクエリを実行してみて、最初にそれが正しく機能していることを確認してください。
Postgres を使用しており、この特定の問題には遭遇していませんが、デバッグに役立つ手順がいくつかあります。
を。どのバージョンの postgres と psycopg2 を使用していますか? さらに言えば、djangoのどのバージョンですか?
b. 「--verbosity=2」オプションを指定して syncdb コマンドを実行し、すべての出力を表示してみてください。
c. 「manage.py sql」コマンドを実行して、django が生成している SQL を見つけます。postgres シェルで新しいモデルの CREATE TABLE ステートメントを実行し、何が発生するかを確認します。
d. postgres のエラー ロギング、ステートメント ロギング、およびサーバー ステータス ロギングを有効にして、特定のメッセージをキャッチできるかどうかを確認します。
以前は、オプション b またはオプション c のいずれかが問題を指摘することがよくありました。
ここでも奇妙ですが、PostgreSQL サービス (またはサーバー) を再起動するだけで解決しました。テーブル作成コードを psql にも手動で貼り付けようとしましたが、それでも解決しませんでした (まあ、それがロックの場合は解決できませんでした)。そのため、再起動を使用しました。
systemctl restart postgresql.service
それは私の Suse ボックスにあります。
サービス/サーバーをリロードすると、既存のテーブル ロックも解除されるかどうかわかりませんか?