2011-12-19 12 views
0

私は私のdjango postgres dbにデータをプッシュする小さなpythonスクリプトを持っています。 djangoプロジェクトから関連するモデルをインポートし、.save関数を使用してデータを問題なくdbに保存します。postgres + GeoDajango - データが保存されないようです。

昨日は正常に動作していました。私は開始し、その日のコースで何度も私のdjangoプロジェクトとpythonスクリプトを停止したが、決して一日の終わりまで、コンピュータを再起動または電源を切ることはありません。

今日私は、データがもはやdbにないことを発見しました!

これは明らかに何かをするのを忘れてしまったようですが、save関数がモデルから呼び出されると、データはdbにコミットされると考えました。

+0

おそらく私は明示的にコミット関数を呼び出す必要がありますが、SQLiteのmysqlとは対照的に、postgresを使用していますか? – michael

+0

は、同じことが起こったかどうかを再度確認するためにコンピュータを再起動しましたが、今回はデータがありました。たぶん、コンピュータがきれいに止まらなかったのでしょうか? – michael

答えて

1

この回答は、「このような問題のトラブルシューティングを開始する場所」です。問題はかなり曖昧であり、効果的なトラブルシューティングのための十分な情報がないためです。

これが起こった場合は、最初にPostgreSQLのステートメントログを有効にして、ステートメントが入ってくるのを見てください。これにより、開始およびコミットステートメントとクエリが表示されます。この種の問題をトラブルシューティングすることは、クエリにアクセスすることは事実上不可能です。探しているものには、COMMITの欠落とステートメントの欠落があります。

その後、次に行うことは、コンピュータを再起動した状況を確認することです。期待されるコミットの前にそうすることは可能でしょうか?または、時間が経つにつれてディスクに電力が流れなくなり、トランザクションログがフラッシュされませんでしたか?

これらの2つは、開発環境のdb側で考えられるすべての原因を除外する必要があります。旧バージョンのPostgreSQLの実稼働環境では、システムに自動バキュームが正しく実行されていること、およびxidラップアラウンドに関する警告が表示されないことを確認する必要があります。新しいバージョンでは、これは問題ではありません。なぜなら、PostgreSQLはxidのラップアラウンドに近づくとクエリを受け入れることを拒否するためです。

関連する問題