![MySQL“max_allowed_packet”错误——如何分析最大数据包大小?](https://linux22.com/image/541656/MySQL%E2%80%9Cmax_allowed_pa%E2%80%8B%E2%80%8Bcket%E2%80%9D%E9%94%99%E8%AF%AF%E2%80%94%E2%80%94%E5%A6%82%E4%BD%95%E5%88%86%E6%9E%90%E6%9C%80%E5%A4%A7%E6%95%B0%E6%8D%AE%E5%8C%85%E5%A4%A7%E5%B0%8F%EF%BC%9F.png)
继续遇到“max_allowed_packet”错误消息,对于数据,我刚刚猜测这个数字应该是多少......
我想停止猜测,并知道如何查看这个数字应该是多少——并且看起来该信息可能在数据库表信息中的“Data_length”列中。
这是正确的吗?如果正确,我该如何计算在 MySQL 配置中输入的值以避免在得到错误之前出现错误。
(如果有关系的话,我会在数据库恢复时不断收到这些错误。)
问题、反馈、请求——只需评论,谢谢!!
附加信息:数据库是 INNOdb,而不是 MyISAM。
更新(1):
为了找到一种方法来对“max_packet”进行基准测试,我做了以下操作,运行恢复,得到导致错误的行号错误,将该行转储到文本文件中以测量文件大小。
错误:
ERROR 1153 (09S01) at line 2742: Got a packet bigger than "max_allowed_packet" bytes
SED 代码:
sed 'INSERTLINENUMBERq;d' INSERTDATABASEDUMPFILENAME.sql > INSERTLINENUMBER.txt
问题是……该行只有 8mb,“max_allowed_packet”设置为 100mb。
答案1
我不能 100% 确定如何分析 max_allowed_packet 情况。但我知道我有一个 ~3gb 的数据库导出文件,需要在 max_allowed_packet 大小为 100mb 的情况下导入。我通常的做法是将其任意设置为高值,导入数据,然后将其重新设置为 1M 并重新启动 mysqld。