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

如何修复java.sql.SQLException:未知系统变量'transaction_isolation'错误?

解决java.sql.SQLException: Unknown system variable 'transaction_isolation'错误

问题场景

运行SpringBoot项目时抛出如下错误:

java.sql.SQLException: Unknown system variable 'transaction_isolation'
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:130) ~[mysql-connector-j-8.0.33.jar:8.0.33]
    at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-j-8.0.33.jar:8.0.33]
    at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:825) ~[mysql-connector-j-8.0.33.jar:8.0.33]
    at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:446) ~[mysql-connector-j-8.0.33.jar:8.0.33]
    at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:239) ~[mysql-connector-j-8.0.33.jar:8.0.33]
    at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:188) ~[mysql-connector-j-8.0.33.jar:8.0.33]
    at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138) ~[HikariCP-5.0.1.jar:na]
    at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:359) ~[HikariCP-5.0.1.jar:na]
    at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:201) ~[HikariCP-5.0.1.jar:na]
    at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:470) ~[HikariCP-5.0.1.jar:na]
    at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561) ~[HikariCP-5.0.1.jar:na]

环境为Manjaro系统,此前项目运行正常,未更新/移除MySQL、SpringBoot相关组件,调整依赖版本后问题仍存在。

解决方案

  • 检查MySQL版本兼容性
    该错误核心原因是MySQL服务器版本过低:transaction_isolation是MySQL 5.7及以上版本才支持的系统变量,5.6及以下版本使用的是tx_isolation。执行mysql -V查看服务器版本,若版本低于5.7,可选择:

    • 升级MySQL服务器至5.7+版本;
    • 在JDBC连接URL中添加适配参数,指定使用旧版隔离级别变量,示例:
      jdbc:mysql://localhost:3306/your_db?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC&sessionVariables=tx_isolation='READ-COMMITTED'
      
      替换your_db为实际数据库名,READ-COMMITTED为你的业务所需隔离级别。
  • 验证MySQL系统变量
    登录MySQL控制台,执行SHOW VARIABLES LIKE '%isolation%';,确认系统变量名称是transaction_isolation还是tx_isolation。如果是后者,说明服务器版本不支持新变量名,需按上述方法适配。

  • 调整JDBC驱动适配参数
    若不想升级MySQL,可在JDBC URL中添加useLegacyDatetimeCode=false参数,强制驱动使用旧版变量名逻辑,避免触发新变量的查询:

    jdbc:mysql://localhost:3306/your_db?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false
    
  • 清理连接池缓存
    重启SpringBoot应用,清空HikariCP连接池的旧连接缓存,确保新的URL参数生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 19:05:59