如何解决 MySQL max

如何解决 MySQL max,第1张

MySQL是目前使用很广泛的数据库,在使用过程中,有时我们会遇到一个与 "max_allowed_packet" 相关的报错,那如何解决这个问题呢? 看如下经验。

方法/步骤

先看看与这个错误相关的后台异常 :

Packet for query is too large (1706 >1024). You can change this value on the server by setting the max_allowed_packet' variable.

一旦数据库出现这个问题,基本执行任何查询语句,后台都会报这个错!(除非查询所得数据量特别少)!

先登录数据库,查看 max_allowed_packet 这个参数值

连接数据库服务器,登录 mysql, 执行命令 :

show variables like '%max_allowed_packate%'

即可查看这个系统参数目前的值 ! 我的系统,目前显示只有 1024 字节,确实太小了!

通过 mysql 命令更改这个值到 100M !

连接数据库服务器,登录 mysql, 执行命令 :

set global max_allowed_packet = 100*1024*1024

退出后,重新登录 mysql ,再次查看这个系统项的值, 注意,必须重新登录mysql,否则这个值还是显示为原始值(缓存)!

修改后,这个配置项显示为 100 M !

修改配置文件--Windows

我们刚才的修改是针对运行环境,但如果我们的配置文件不变,则重启数据库后,这个值又恢复为原始值了,对于 Windows 下的 MySQL,我们需要修改其配置文件 my.ini , 这个文件在 MySQL 的安装根目录下。

注意: MySQL 配置文件分为几个段 (Section), 包括 [mysql], [mysqld], [mysqldump] 等, 我们需要在 [mysqld] 段下添加配置项 :

max_allowed_packet = 100M

修改配置文件--Linux

在 Linux 中,MySQL 对应的配置文件是 my.cnf , 我们在Linux终端输入如下命令 :

mysql --help | grep my.cnf

可以查看 MySQL 所使用的 my.cnf 列表(优先级列表,先找到的配置文件生效),MySQL 会逐个目录寻找这个文件,直到找到为止!

我们逐个目录找到我们系统 MySQL 所使用的 my.cnf 配置文件,找到对应的配置项,修改为 100M 即可。

max_allowed_packet 是Mysql中的一个设定参数,用于设定所接受的包的大小,根据情形不同,其缺省值可能是1M或者4M。比如是4M的情况下,这个值的大小即为:4*1024*1024= 4194304。

当日志中出现了诸如:“Package for query is too large (xxxxxxxx >4194304). You can change this value on the server by setting the max_allowed_package variable”的提示的时候,错误的本身就清楚的提示了对应的方式。

使用如下的方式可以确认当前设定值

select @@max_allowed_packet

show variables like 'max_allowed_packet'

可以使用set命令来修改,但是只是临时修改,重启后即丢失。也可以直接修改过 mysql的设定文件并重启mysql服务,即可永久化保证设定。

根据mysql的安装不同修改的文件也会有所不同,普通安装方式可能会修改my.cnf,这里使用mysql的官方镜像,其修改的文件应该为:/etc/mysql/mysql.conf.d/mysqld.cnf

修改内容:向此文件中添加如下设定

max_allowed_packet = 256M

修改前

[mysqld]

pid-file= /var/run/mysqld/mysqld.pid

socket = /var/run/mysqld/mysqld.sock

datadir = /var/lib/mysql

log-error = /var/log/mysql/error.log

By default we only accept connections from localhost

bind-address= 127.0.0.1

Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

修改后

[mysqld]

pid-file= /var/run/mysqld/mysqld.pid

socket = /var/run/mysqld/mysqld.sock

datadir = /var/lib/mysql

log-error = /var/log/mysql/error.log

By default we only accept connections from localhost

bind-address= 127.0.0.1

Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

max_allowed_packet = 256M

重启容器并确认即可。

mysql 怎么修改max,解答如下

修改方法为:

进入mysql的安装目录,找到my.ini文件,在最底下加上 max_allowed_packet=*M (自己视情况设置)即可。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6135262.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-16
下一篇 2023-03-16

发表评论

登录后才能评论

评论列表(0条)

保存