springboot项目启动时连接mysql时提示,Can not read response from server. Expected to read 4 bytes, read 0 bytes be……
解决办法:
1、mysql服务可能down了
ps -ef|grep mysqld ,会有僵尸进程mysqld,启动kill -9 进程号
先重启一下mysql,再连接一下试试。如果不行再看下一步
(亲身体会,我的mac mysql使用navicat可以连接,但是启动java项目就连不上,报上面错误,kill掉再启动就好了。)
补充,后来发现是每次导入数据库后(使用source命令),java项目就连不上,重启一下mysql后就好了。
2、检查数据库连接池的参数(尽量开发环境连接数不要设置太大)
spring.datasource.max-active=100
spring.datasource.max-idle=20
spring.datasource.min-idle=8
spring.datasource.initial-size=10
使用sql语句查询一下最大连接数:
show VARIABLES like 'max_connections'
修改数据库连接数sql语句:
set GLOBAL max_connections=3600;
3、检查数据库连接超时时间
show VARIABLES like 'wait_timeout'
修改数据库连接超时时间sql语句:
//设置交互式连接超时时间,例如mysql客户端
set session interactive_timeout=28800;
set GLOBAL interactive_timeout=28800;
//设置非交互式连接超时时间,例如jdbc
set session wait_timeout=28800;
set GLOBAL wait_timeout=28800;
注意:
以上修改都是临时的,重启mysql后失效。
如果要永久修改如下:
需要修改mysql配置文件
[mysqld]
wait_timeout = 28800
interactive_timeout = 28800
#增加以上两列即可,因为官方文档要求修改此参数必须同时修改interactive_timeout