或者通过示例,max_allowed_packet需要什么来执行以下查询?请不要只给我价值,而是解释你是如何决定它的。谢谢
$stmt=$pdo->prepare('INSERT INTO t(c1,c2,c3) VALUES(?,?,?)');
$stmt->execute([9876543210,9876543210,9876543210]);编辑。或者这个呢:
$sql='INSERT INTO t(pk,c1,c2) VALUES(?,?,?), (?,?,?), (?,?,?)
ON DUPLICATE KEY UPDATE c1=VALUES(c1),c2=VALUES(c2)';
$stmt=$pdo->prepare($sql);
$stmt->execute([1,111,111,2,222,222,3,333,333]);发布于 2016-12-13 18:25:04
要计算max_allowed_packet大小,取最大blob列的字节长度并乘以11。
在您的示例中,虽然您有一个冗长的查询,而不是大量的blob数据。根据我的经验,11乘准则仍然有效,但这并不是调整值的最佳方法。
如上所述,证据是优化此值的最佳方法。我会将max_allowed_packet设置为任意巨大的值,比如1G。(我相信,最大的MySQL支持。)然后,在正常操作中运行您的软件。如果没有得到PACKET_TOO_LARGE错误,那么将值减半,然后再试一次。重复,直到溢出限制,然后加倍。这将代表一个合理的上限,为您的特殊需要,有很大的增长空间。
https://stackoverflow.com/questions/41125695
复制相似问题