關注微信公眾號:CodingTechWork,一起學習進步。
介紹
問題概述
在開發過程中,服務程序報錯Caused by: java.sql.SQLException: Unknown system variable 'transaction_isolation'
看着sql字樣,應該是數據庫的問題。
排查方向
遇到這種問題,我們首先要看數據庫是否正常,也可以通過查看連接數據庫的其他服務是否正常。其次,我們是要查看自己開發的服務程序是否連接數據庫異常,如驅動版本號是否和數據庫一致?是否連接配置有問題?
報錯排查
查看數據庫
- 查看數據庫版本號
mysql> select version();
- 查看數據庫隔離級別變量
mysql> show variables like 't%_isolation';
查看服務程序
- 查看jdbc驅動版本號
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId></dependency>
點擊mysql-connector-java
查看版本號:
我們也可以通過查看jar包的方式核對。
解決方案
分析原因
由於業務需要將Spring Boot的版本號提高到了2.x,而jdbc版本號未指定,隨之帶來的mysql-connector-java
版本號也跟着提高到了,導致驅動和數據庫版本不匹配。
解決方案
當通過數據庫查看show variables like 't%_isolation';
沒有出現transaction_isolation,要么升級數據庫,要么降低連接數據庫的服務程序jdbc版本(不超過5.1.43
)。
在數據庫通用的情況下,我們一般還是更改服務的jdbc版本比較穩妥,如下方式更改依賴:
依賴代碼:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.43</version>
</dependency>
更改完依賴后,重新import一下依賴,最后打包,重啟服務發現不再報錯即可。