mysql5.7运行的项目突然进不去了,查看日志报错com.mysql.jdbc.PacketTooBigException: Packet for query is too large
百度了一下说是 mysql的max_allowed_packet设置过小引起的,我一开始设置的是1M(我也没设置过,可能是系统默认的),后来改为了20M。中间遇到了不少问题,网上的方法是具体可以参考这一片文章https://blog.csdn.net/fly0744/article/details/13623079
进入我们linux中的数据库,进入到mysql中执行
查看目前配置
show VARIABLES like '%max_allowed_packet%';
显示的结果为:
+--------------------+---------+ | Variable_name | Value | +--------------------+---------+ | max_allowed_packet | 1048576 | +--------------------+---------+
以上说明目前的配置是:1M
大佬给出的方法是
可以编辑my.cnf来修改(windows下my.ini),在[mysqld]段或者mysql的server配置段进行修改。
max_allowed_packet = 20M
如果找不到my.cnf可以通过
mysql --help | grep my.cnf
去寻找my.cnf文件。
我照着做了一下,问题来了
1.没有my.cnf文件,我百度了很久也没有找到,在一篇文章中有了答案https://blog.csdn.net/djcode/article/details/78621772
在5.7.18版本中,使用tar.gz安装时,也就是压缩包解压出来安装这种,已经不再需要my.cnf文件也能正常运行。我们需要自己新建一个,在etc文件夹中
touch my.cnf
然后将我们需要的东西写入,这里我么只需要写入max_allowed_packet = 20M,但是需要在[mysqld]中
因此在新建的文件夹中写上
[mysqld]
max_allowed_packet = 20M
退出即可
下载就需要重启数据库了,网上有很多方法,我试了几种,没有成功,最后是在mysql
安装目录的bin文件夹中执行 ./mysqladmin -uroot -p shutdown 即可,然后我又出现了问题
2.系统提示 -bash: mysqladmin: command not found 参考文章https://blog.csdn.net/qq1139991268/article/details/79577444
这是由于系统默认会查找/usr/bin下的命令,如果这个命令不在这个目录下,当然会找不到命令,我们需要做的就是映射一个链接到/usr/bin目录下,相当于建立一个链接文件。ln -s /usr/local/mysql/bin/mysqladmin /usr/bin
执行这个即可
然后我们再运行 ./mysqladmin -uroot -p shutdown 就关闭了数据库,执行完后稍等一下,不要着急按回车
然后我们再次启动数据库,我执行的是 nohup ./mysqld_safe & 后台启动,关闭窗口后也运行
这样就可以了