次のようなループがある場合:
foreach(...) {
$r1 = $zend_db->fetchRow("SELECT ... ");
$zend_table->insert($data_array, $where);
}
... 数千回実行しています。$r1
前のループで挿入されたレコードが含まれていない可能性はありますか?
http://dev.mysql.com/doc/refman/5.1/en/query-cache.htmlで、「クエリ キャッシュは古いデータを返しません。テーブルが変更されると、クエリ キャッシュ内の関連するエントリがフラッシュされます。 ." しかし、ZEND は SELECT や INSERT に対して予期しないキャッシュを行うのではないでしょうか?
これを解決するためにトランザクションを使用する必要がありますか?
二重記録に問題がありましたが、それがどこから来たのか他に説明がありません。しかし、2 か月前に存在しない csv データをインポートしたため、再現できません。