当我尝试在PHP代码和phpMyAdmin中执行它时,此查询将终止。
UPDATE Inventory
INNER JOIN InventorySuppliers
ON Inventory.LocalSKU = InventorySuppliers.LocalSKU
SET Inventory.Integer2 = '1'
WHERE InventorySuppliers.SupplierSKU = '2D4027A6'
错误是:
1205 - 超出锁定等待超时;尝试重新启动交易
如何防止锁定超时和/或解决此问题?
我可以在Microsoft Access中正确运行此查询,phpMyAdmin db是该Access数据库的副本。增加执行时间对我来说不是一个选项,因为一次更新记录需要很长时间。
$data1 = array('Inventory.Integer2'=>$shipping);
$this->db->where('InventorySuppliers.SupplierSKU', $SupplierSKU);
$this->db->update('Inventory inner join InventorySuppliers on Inventory.LocalSKU = InventorySuppliers.LocalSKU', $data1);
$this->db->close();
return ($this->db->affected_rows() > 0);
答案 0 :(得分:0)
在运行UPDATE
之前发出此命令。
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED
答案 1 :(得分:0)
好的......对我有意思...... 正如我告诉你的那样,我的SQL数据库是来自ms access db的一个副本...不知道发生了什么,但是mysql数据库表没有主键或索引虽然原始数据库已经拥有它们...我尝试了PK和索引,但是mysql给我的错误,我的最终解决方案是
这对我有用,现在同样的查询运行正常......
感谢大家的帮助......希望这两个步骤可能会帮助将来的某个人......