关于Mysql8.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

其他参数变化请参考[官方文档]

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • 详解Mybatis逆向工程中使用Mysql8.0版本驱动遇到的问题

    前言 今天在使用 8.0.12 版的 mysql 驱动时遇到了各种各样的坑,在使用 JDBC 连接上遇到的问题可以参考我的上一篇博客.我在使用 mybatis 逆向工程生成各种 mapper , pojo , dao 时,遇到了一个困惑我好几个小时的错误,这个错误是 Result Maps collection already contains value for BaseResultMap 产生这个错误可能有各种原因.但是这里我只说我的原因及解决过程. 初步探索 我在网上查阅了大量的博客文章,

  • 浅析mysql.data.dll驱动各版本介绍

    此处为mysql驱动mysql.data.dll 注意: 此处X86版本较多,X64版本较少 X64: X86: Vs添加引用过程: 总结 以上所述是小编给大家介绍的mysql.data.dll驱动各版本介绍,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的.在此也非常感谢大家对我们网站的支持!

  • 关于Mysql8.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版本驱动将参数 nullCatalogMeansCurr

  • 关于MyBatis连接MySql8.0版本的配置问题

    在学习mybatis时,遇到了一个错误,错误如下: Error querying database.  Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 错误原因: 本地使用的数据库版本为MySQL8.0 在pom.xml配置文件中导入MySQL的jar包版本为 因为本地数据库版本与导入MySQL的jar包版本不一致引起的错误 解决办法: [1] 本地安装相应版本

  • MySQL8.0+版本1045错误的问题及解决办法

    目录 一.管理员权限打开CMD 二.CD到自己的MySQL安装目录 三.停止MySQL服务 四.键入命令行 五.重新打开CMD窗口 六.登录MySQL数据库 七.密码改为空密码 八.刷新数据 九.退出数据库 十.启动MySQL服务 十一.命令行正常登录MySQL 使用命令行登录MySQL报错1045 Access denied for user ‘root’@‘localhost’ (using password:YES),折腾半天才解决问题. 一.管理员权限打开CMD 二.CD到自己的MySQ

  • Linux下卸载MySQL8.0版本的操作方法

    一.关闭MySQL [root@localhost /]# service mysqld stop Redirecting to /bin/systemctl stop mysqld.service 二.查看当前安装mysql情况,查找以前是否装有mysql [root@localhost /]# rpm -qa|grep -i mysql mysql-community-client-8.0.13-1.el7.x86_64 mysql-community-libs-8.0.13-1.el7.x

  • MySQL8.0.24版本Release Note的一些改进点

    4月20号,MySQL8.0更新了8.0.24这个版本,晚上看了下release note,整理了一些改进点,记录在这里,后续可以下载对应的版本进行测试. 一.连接管理 1.连接信息更详细 之前版本中,如果一个MySQL连接长时间没有和MySQL服务进行交互,则会收到一个MySQL Server has gone away的输出,没有具体的原因信息: 新版的MySQL Server会在连接关闭之前将连接关闭的原因写入到客户端,客户端能够看到更加详细的信息,来分析为什么连接被关闭. 2.连接错误信

  • MySQL8.0设置远程访问权限的方法

    上一篇文章讲解了重置 MySQL 的密码,有同学反馈无法程连接到数据库,这是因为 MySQL 安装完成后只支持 localhost 访问,我们必须设置一下才可以远程访问,另外还有一些 MySQL 8.0 连接时的一些问题,本文也会一并进行讲解如何解决. 1.登录MySQL mysql -u root -p 输入您的密码 2.选择 mysql 数据库 use mysql; 因为 mysql 数据库中存储了用户信息的 user 表. 3.在 mysql 数据库的 user 表中查看当前 root 用

  • 详解MySQL8.0+常用命令

    开启远程访问 通过以下命令开启root用户远程访问权限: CREATE USER 'root'@'%' IDENTIFIED BY 'password'; GRANT ALL ON *.* TO 'root'@'%'; ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; FLUSH PRIVILEGES; 注:其中,password为root的密码,FLUSH PRIVILEGES为刷新权限 导入数

  • 浅析centos 7 mysql-8.0.19-1.el7.x86_64.rpm-bundle.tar

    百度云盘: 链接: https://pan.baidu.com/s/1hv5rUWYK080hCuONqpSVCg 提取码: qhgp 安装说明: https://www.jb51.net/article/138787.htm 操作记录 mkdir mysql 40 ll 41 cd my 42 cd mysql/ 43 ll 45 tar -xvf mysql-8.0.19-1.el7.x86_64.rpm-bundle.tar 46 ll 47 rpm -ivh mysql-communit

  • 阿里云centos7中安装MySQL8.0.13的方法步骤

    1.下载MySQL安装包 (这里是有技巧的,说不定我这时写这个的时候版本还是你看到时的旧版本了,如果已经不是8.0了,可以根据这样来 下新版本) 先进入官网 再将这两者一结合,就是最新版本的了 所以 [root@h1 ~]# rpm -ivh http://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm 2.安装mysql [root@localhost ~]# yum install -y mysql-server 或

随机推荐