MySQL: 发送查询数据包时出错。 PID=2

MySQL: Error while sending QUERY packet. PID=2

我尝试执行一个非常简单的查询来删除一行。 "max_allowed_packet" 等于“1073741824”,这就是为什么我很困惑为什么我得到

Error while sending QUERY packet. PID=2

我 select 来自 table 的 25 行删除行后通过短信和睡眠(1)发送数据。

查询:

$stmt = $db->prepare("select * from sms limit 25");
$stmt->execute();

我在这里遍历行并通过短信发送行数据然后删除它

$q = $db->prepare("delete from sms where id = '$r[id]'");
$q->execute();
sleep(1)

但有时(只是有时不是每次)我都会收到该错误并且行不会被删除,因此短信会多次发送给同一用户,因为它仍在 table 中。有解决这个问题的想法吗?

提前致谢。

当您使用像

这样的模式时
prepare mysql query a
execute mysql query a
for each row in result set a
    prepare mysql query b
    execute mysql quer b

您必须为 mysql 查询 b 使用单独的数据库连接。为什么?只要您从其结果集中读取行,查询 a 仍可以使用其连接。