2011-11-25 73 views
2

我有一些問題,我很久以前就寫了一個網站,在查看之後,每隔一段時間(6次超過5000個插入),有些插入沒有完成。EG:MySQL插入一半的記錄

mysql_query("INSERT INTO `invoices` (subtotal, vat, total) VALUES ('30.00', '6.00', '36.00');", $conn); 
$invoice_id = mysql_insert_id(); 
for($i=0; $i < 3; $i++) mysql_query("INSERT INTO `invoice_items` (item_name, invoice_id, subtotal, vat, total, tax_code) VALUES ('Bricks', '$invoice_id', '10.00', '2.00', '12.00', 'T1');", $conn); 

有時在for循環的那些沒有得到插入,很明顯for循環是通過真正的代碼的數組循環我猜這是因爲連接獲得一個foreach ..

中途中斷..

我想確保一切都得到插入或沒有,我應該切換到使用交易?

院長。

+0

這是奇怪的。 mysql日誌不得不說什麼?使用mysql_query('...')或die(mysql_error()); –

回答

0

嘗試添加在查詢的末尾:或die(mysql_error());所以你可以檢查你得到了什麼錯誤。

如果你真的做了5000插入,你可以將超時設置爲一個很大的數字,所以它不會意外停止。否則,你可以讓它檢查是否一切都插入表中,如果沒有,它會插入跳過的數據...

0

因爲你沒有這樣做,在事務中你可以得到一半的插入。每個插入可能由於許多不同的原因而失敗。重複鍵重複例外,鎖定超時等。

如果所有這些刀片是被視爲一個單一的設備添加它周圍的交易(當你發燒交易它可能也加快了插入)