關於Mysql8.0版本驅動getTables返回所有庫的表問題淺析

這篇文章主要給大家介紹了關於Mysql 8.0版本驅動getTables返回所有庫的表問題的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨着小編來一起學習學習吧

前言

本文主要介紹的是關於Mysql8.0驅動getTables返回所有庫的表的相關內容,MySQL Connector/J 8.0版本驅動向下兼容之前的5.5+版本MySQL,如果你使用的是5.5+版本MySQL,都可以升級成8.0版本驅動。

如果你是使用的5.X版本驅動,需要將Driver Class換成: com.mysql.cj.jdbc.Driver

需要注意的是:

8.0版本驅動DataSource相關的參數有變化:

比如8.0版本驅動將參數 nullCatalogMeansCurrent 的默認值由true改爲了false,如果你使用DatabaseMetaData.getTables獲取所有的表信息,8.0版本驅動將返回所有庫的表。

// 默認會返回所有庫的表,而不僅是datasource指定的庫
databaseMetaData.getTables(null, null, null, new String[]{"TABLE"})

解決方案就是在連接池初始化時,將這個參數改爲true,以HikariCP爲例:

Java Config:

HikariConfig config = new HikariConfig();
...
config.addDataSourceProperty("nullCatalogMeansCurrent", true);

Spring Boot 配置:

spring.datasource.hikari.data-source-properties.nullCatalogMeansCurrent=true

其他參數變化請參考[官方文檔]

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對神馬文庫的支持。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章