【问题标题】:MARIADB - Error while sending QUERY packet (not max_allowed_packet)MARIADB - 发送 QUERY 数据包时出错(不是 max_allowed_pa​​cket)
【发布时间】:2017-05-14 21:18:27
【问题描述】:

我在使用 PHP7 脚本将数据保存到数据库 (MariaDB) 时遇到问题。该脚本在以前的托管包上运行良好,但在我的新 VPS 上却不行。

Warning: Error while sending QUERY packet. PID=1208 in ...

其他线程导致我查看设置,但我的设置是:

  • max_allowed_pa​​cket = 1GB
  • wait_timeout = 10

我进一步检查了这个问题,发现查询本身没有问题(它在 phpMyAdmin 中执行良好)。

这似乎与在不关闭连接的情况下连续执行两个查询有关(第二个失败)

相同的脚本在旧主机上运行良好,它必须是一个设置 - 有人有什么想法吗?

非常感谢, 本

MariaDB 配置(/etc/my.cnf):

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0

skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1GB
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M

innodb_file_per_table

max_connections=70
max_user_connections=30
wait_timeout=10
interactive_timeout=50
long_query_time=5

【问题讨论】:

  • 你已经有了答案It seems to be something to do with executing two queries in close succession without closing the connection (the second one fails).

标签: php mysql mariadb


【解决方案1】:

问了 1 分钟后,我已经回答了我自己的问题。这就是问题所在:

wait_timeout=10

我之前的托管配置有 =180,这使得我写得很糟糕的脚本可以正常工作。在 =10 下,完成任务的时间还不够长。我现在已将其延长到 180,但确实应该为此添加句柄。

【讨论】:

    【解决方案2】:

    我也有同样的问题,而且非常烦人。查询运行得很快,但在某些时候,它们会无缘无故地挂起并锁定。 我有 60 秒,不认为增加它是一个好的解决方案。

    这是否意味着脚本需要超过 60 秒并且数据库已消失?

    但是我注意到 SQL 是“死锁”的,因为它们挂在 SHOW PROCESSLIST 中。我只使用 SELECT + JOIN。所以 SQL 是个问题……但是当我运行它们时,它们很快……太糟糕了。

    你说是连接没有关闭,但这没有意义。连接自动关闭。

    【讨论】:

      猜你喜欢
      • 2017-11-12
      • 2015-08-25
      • 2012-02-07
      • 2012-12-11
      • 2018-04-22
      • 1970-01-01
      • 1970-01-01
      • 2010-09-10
      相关资源
      最近更新 更多