MARIADB - 发送QUERY数据包时出错(不是max_allowed_pa​​cket)

时间:2016-12-30 15:17:16

标签: php mysql mariadb

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

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

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

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

我已经进一步审查了这个问题,发现查询本身没有任何问题(它在phpMyAdmin中执行正常)。

这似乎与紧密连续执行两个查询而不关闭连接(第二个失败)有关。

同样的脚本在旧主机上运行正常,它必须是一个设置 - 有没有人有任何想法?

非常感谢, 本

MariaDB config(/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

2 个答案:

答案 0 :(得分:0)

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

wait_timeout=10

我以前的托管配置有 = 180 ,这使得编写糟糕的脚本无法正常工作。在 = 10 下,它不足以完成任务。我现在把它加长到 180 ,但是应该为此添加句柄。

答案 1 :(得分:0)

我也遇到同样的问题,这很烦人。查询运行很快,但是在某些时候它们一直挂起并锁定,没有任何原因可以解释。 我有60秒的时间,不认为增加它是一个很好的解决方案。

这是否意味着脚本要花费60秒钟以上并且数据库已消失?

但是,我注意到SQL处于“死锁”状态,因为它们挂在SHOW PROCESSLIST中。我只使用SELECT + JOIN。因此,SQL是问题所在……但是当我运行它们时,它们很快……太奇怪了。

您说的是连接没有关闭,但这没有任何意义。连接自动关闭。