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

 

Logo

更多推荐