手把手解决GUNS 6.0启动时MySQL 8.0连接池报错
当项目启动突然""时
最近在本地用GUNS 6.0框架搭建新项目时,控制台突然蹦出鲜红的报错信息:"Communications link failure",就像咖啡机突然卡住不出咖啡。作为刚接触这个框架的新手,我盯着日志里那行"The last packet sent successfully to the server was 0 milliseconds ago"发了会儿呆——明明跟着教程配置的,怎么就连不上数据库呢?
揪出三个"捣蛋鬼"
1. 驱动类的"身份危机"
MySQL 8.0更换了官方推荐的驱动类,就像突然换了门锁但没给你新钥匙。原来在application.yml里写的:
- 错误示范:
driver-class-name: com.mysql.jdbc.Driver
- 正确姿势:
driver-class-name: com.mysql.cj.jdbc.Driver
2. SSL的"过度热情"
新版本MySQL默认开启SSL验证,像超市保安非要检查购物小票。在数据库连接字符串末尾需要添加两个重要参数:
旧版本参数 | 新版本必加参数 |
无 | useSSL=false |
无 | allowPublicKeyRetrieval=true |
3. 时区的"平行宇宙"
服务器和本地时区不同步就像约会对象总迟到半小时。需要明确指定时区参数:
- 东八区配置:
serverTimezone=Asia/Shanghai
- 或者统一时区:
serverTimezone=UTC
完整配置模板大公开
经过多次调试,最终可用的application.yml数据库配置长这样:
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/guns?useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghaiusername: rootpassword: your_passwordhikari:connection-timeout: 30000maximum-pool-size: 20idle-timeout: 600000max-lifetime: 1800000
别忘了检查这些细节
- 确认MySQL Connector/J版本≥8.0.11
- 在pom.xml检查依赖是否正确:
8.0.xx - 用Navicat或命令行先测试基础连接
- 防火墙是否放行了3306端口
当配置正确时的甜蜜时刻
当看到控制台输出"HikariPool-1 - Starting..."和"HikariPool-1 - Start completed."时,就像听到咖啡机重新开始工作的嗡嗡声。试着在Service层写个简单的查询方法,看着日志里流畅执行的SQL语句,就知道这场"连接大战"终于告捷了。