2011-11-25 71 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

因为你没有这样做,在事务中你可以得到一半的插入。每个插入可能由于许多不同的原因而失败。重复键重复例外,锁定超时等。

如果所有这些刀片是被视为一个单一的设备添加它周围的交易(当你发烧交易它可能也加快了插入)