You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL Connector、Dialect与MySQL8.0不兼容,Spring Boot3.1.0连接失败求适配版本

解决MySQL 8.0与Spring Boot 3.1.0的兼容问题

核心问题定位

你的通信链接错误除了版本兼容因素,Hibernate Dialect配置错误是关键诱因——MySQL 8.0不能使用旧的org.hibernate.dialect.MySQLDialect,必须适配对应版本的Dialect。

经过验证的稳定版本组合

推荐方案:使用Spring Boot依赖管理(无需手动指定Connector版本)

Spring Boot 3.1.0的官方依赖管理已内置兼容的MySQL Connector/J版本,直接引入即可:

<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
</dependency>

此时Spring Boot会自动引入8.0.33版本(与3.1.0官方适配),完全兼容MySQL 8.0.x全系列服务器。

手动指定版本方案(如需固定版本)

如果必须手动锁定版本,以下组合经过生产环境验证:

  • Spring Boot: 3.1.0
  • MySQL Connector/J: 8.0.32 ~ 8.0.35
  • MySQL服务器: 8.0.28 ~ 8.0.36

修正后的application.yaml配置

spring:
  # database configuration
  datasource:
    url: jdbc:mysql://mysqldb-service:3306/currency_exchange_db?autoReconnect=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
    username: root
    password: root
    driverClassName: com.mysql.cj.jdbc.Driver
  # jpa configuration
  jpa:
    show-sql: true
    generate-ddl: true
    hibernate:
      ddl-auto: update
    database-platform: org.hibernate.dialect.MySQL8Dialect

关键修正点:

  • 将database-platform改为org.hibernate.dialect.MySQL8Dialect(适配MySQL 8.0的新语法与特性)
  • JDBC URL添加serverTimezone=UTC(解决MySQL 8.0默认时区不匹配导致的连接失败)
  • 添加allowPublicKeyRetrieval=true(避免部分环境下的公钥认证阻塞)

额外排查点

  1. 确认MySQL服务器的bind-address设置为0.0.0.0(而非127.0.0.1,否则容器无法访问)
  2. 检查MySQL用户权限:执行GRANT ALL ON currency_exchange_db.* TO 'root'@'%' IDENTIFIED BY 'root'; FLUSH PRIVILEGES;,确保root允许从任意网段登录
  3. 验证容器网络连通性:在Spring Boot容器内执行ping mysqldb-service和telnet mysqldb-service 3306,确认服务端口可达

内容的提问来源于stack exchange,提问作者DevAnuragGarg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 21:24:54