在使用mysql数据库时,由于MYSQL和APP部署在不通的机器上
导致app连接mysql会断开,抛出以下错误:
The last packet sent successfully to the server was 0 milliseconds ago
经过实验有以下3种解决方式:
1.修噶该可连接串如下:
url: jdbc:mysql://127.0.0.1:3306/xxxxxx?useUnicode=yes&characterEncoding=UTF8&serverTimezone=GMT&useSSL=false&useLegacyDatetimeCode=false
2. 更换数据库连接池
将数据库连接池由Hikari更改为Druid
3.修改配置
1.修改mysql配置(win系统修改my.ini ,linux系统修改/etc/my.cnf):
[mysqld]
wait_timeout=31536000
interactive_timeout=31536000
重启mysql 服务:
sudo service mysql restart
2.修改项目中Hikari数据库连接池的配置:
重点注意这5项配置:
idle-timeout: 30000
max-lifetime: 0 #一个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),缺省:30分钟,建议设置比数据库超时时长少30秒,0代表不限制
connection-timeout: 30000
allow-pool-suspension: true #允许阻塞等待,恢复后执行sql,不丢失数据
register-mbeans: true #
datasource
hikari:
poolName: Hikari
auto-commit: false
minimum-idle: 10
maximum-pool-size: 25
idle-timeout: 30000
max-lifetime: 0
connection-timeout: 30000
allow-pool-suspension: true
register-mbeans: true
connection-test-query: SELECT 1
data-source-properties:
cachePrepStmts: true
prepStmtCacheSize: 250
prepStmtCacheSqlLimit: 2048
useServerPrepStmts: true