参照Milen A.ラデフさんのコメントに起こらないよう、注意したいと思います。それは答えだったはずです。空の行を許可しないでください。
少なくとも1つの列には、挿入が失敗するような制約があります。次に、あなたのアプリケーションは、何が起こっているのか、どのような状況下であるのかを把握するのに十分な診断でエラーを印刷/記録できます。
上記を改訂せずに、キューからすべてのデータが正しく挿入されたかどうか、または行が欠落しているかどうかを判断してください。つまり、いくつかの行が空の挿入に変換されているかどうかを確認します。一部のデータが原因でこの問題が発生している場合は、問題のデータに共通するものを見つけることができます。
準備されたパラメータ化された挿入を使用しているか、毎回SQL挿入文を作成し実行していますか?実行するSQL文字列を構築する場合は、はでなければなりません。文字/バイナリ文字列をlibpqが提供するルーチンで適切に引用していることを確認してください。あるいは、インサートを準備し、データをパラメータとして渡す他の方法に切り替えることができます。ここで、libpq自身が適切に引用することができます。これにより、パフォーマンスも向上する可能性があります。
出典
2009-05-24 16:14:38
dwc
必要に応じてテーブルにチェック制約を追加し、DBからの(必然的な)エラーを待ちます。 –
これはマルチスレッドですか?非同期呼び出しを使用していますか?入力バッファを再利用していますか? –