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

Spring Boot Jar包跨Win10/LinuxMint运行差异及JDBC连接异常

解决Windows 10下Spring Boot + JPA + MySQL启动失败的JDBC连接问题

我之前碰到过类似的跨系统JDBC连接坑,结合你的报错信息和配置来看,大概率是时区配置不匹配、Hibernate方言不对或者Windows环境特有的数据库访问限制导致的,下面给你一步步排查和解决的方案:

先整理你的现有核心配置(方便对比排查)

pom.xml核心依赖(简化版)

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <!-- 其他依赖略 -->
</dependencies>

application.properties配置

# datasource
spring.datasource.url=jdbc:mysql://localhost/apotekfxboot
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# hibernate
spring.jpa.hibernate.ddl-auto=update
spring.jpa.generate-ddl=true
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true

解决方案1:修复JDBC URL的时区参数(最可能的根因)

Windows和Linux的系统时区默认配置往往不一样,而MySQL 8.0+(包括你的MariaDB 10.1.19)的JDBC连接必须指定时区,否则会直接抛出连接异常。修改你的URL:

spring.datasource.url=jdbc:mysql://localhost/apotekfxboot?serverTimezone=Asia/Jakarta&useSSL=false&allowPublicKeyRetrieval=true
  • serverTimezone:换成你所在的时区(比如Asia/Jakarta,或者UTC),要和数据库时区保持一致
  • useSSL=false:避免Windows下SSL连接校验失败
  • allowPublicKeyRetrieval=true:解决某些场景下的公钥检索错误

解决方案2:匹配正确的Hibernate方言

你用的是com.mysql.cj.jdbc.Driver(MySQL 8.0版本的驱动),但方言还是MySQL5Dialect,这在Windows下会触发兼容性问题。换成MariaDB对应的方言:

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MariaDB10Dialect

如果你的Spring Boot版本较低,没有这个方言选项,可以用org.hibernate.dialect.MySQL8Dialect替代。

解决方案3:检查Windows下的数据库访问限制

  • 防火墙设置:确保Windows防火墙允许MariaDB的3306端口入站连接,或者临时关闭防火墙测试
  • 数据库绑定IP:打开Windows下MariaDB的my.ini配置文件,确认bind-address设置为127.0.0.1或者0.0.0.0(允许所有IP访问)
  • root密码验证:确认Windows下MariaDB的root用户密码确实为空,有时候Windows安装时会自动设置密码,和Linux环境不一致

解决方案4:指定明确的MySQL Connector版本

你的pom.xml里没有指定mysql-connector-java的版本,Spring Boot默认引入的版本可能和MariaDB 10.1.19在Windows下不兼容。添加明确的版本号:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.33</version> <!-- 选择和MariaDB 10.1.x兼容的稳定版本 -->
</dependency>

建议按这个顺序排查,先试方案1和2,这两个是跨系统JDBC连接失败的最常见原因。如果还是不行,再检查防火墙和密码配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:43:37