问题标签 [max-allowed-packet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
49 浏览

php - MySQL 抱怨 max_allowed_pa​​cket 违规,查询短于允许的限制

执行多插入查询时,我收到错误“SQLSTATE [08S01]:通信链路故障:1153 获得的数据包大于 'max_allowed_pa​​cket' 字节”。我有一个复杂的类,它组成了多插入查询,彻底检查了限制,所以这真的很奇怪,但是,我们都是人类,所以在尝试找到问题后,我刚刚捕获并记录了异常详细信息并且可以不明白发生了什么。代码(PHP 7.4、PDO、MariaDB 10.5.10):

我得到的是:

所以我发送的查询实际上比限制少了 7 个字节。但是问题被稳定地重现了。是什么原因造成的?可能有一些标题与查询或任何东西一起发送,但我如何确定它们的大小?我在 MySQL 和 MariaDB 文档中都没有找到任何关于它的信息。

0 投票
0 回答
67 浏览

text - MySql/MariaDB longtext 被截断和 max_allowed_pa​​cket

我对带有长文本字段的 MariaDB 有疑问。它仅限于 32770 个字符,并且无法将其放大。

SELECT CHAR_LENGTH(longtext_column) from table where id = x;

我像这样编辑了我的cnf:

我确认可以运行此查询:

在此处输入图像描述

无论如何,我运行一个超过 32770 个字符的更新查询,并且总是将文本截断为 32770。

另一方面,我在官方文档中将其标记为:

如果值包含多字节字符,则有效最大长度会更小。LONGTEXT 列的有效最大长度还取决于客户端/服务器协议中配置的最大数据包大小和可用内存。

最后,也许有用的信息:

  1. 我尝试存储的字符串是 JSON。
  2. 我在另一台服务器上尝试了相同的结果。
  3. 我正在运行 Navicat 来运行这些查询。

我错过了什么?

Edit1:我从来没有得到MySQL Error 1153 - Got a packet bigger than 'max_allowed_packet' bytes错误。

编辑 2:MySql 版本 15.1 Distrib 10.3.31-MariaDB

编辑 3:SHOW CREATE TABLE tbl_name命令文本(缩短为相关字段):

Edit4:我上传了一个用于测试 de 32KB 限制的 MySql 脚本。

https://pastebin.com/NUw7Q1cE