IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> (Kettle) pdi-ce-8.2 连接MySQL8.x数据库时驱动问题之终极探讨及解决方法分析 -> 正文阅读

[大数据](Kettle) pdi-ce-8.2 连接MySQL8.x数据库时驱动问题之终极探讨及解决方法分析

本文是对kettle8连接MySQL8之驱动问题的终极探讨,涉及到了MySQL和kettle的前世今生O(∩_∩)O~,也是对前人经验的全面总结。

【问题描述】

在使用(Kettle) pdi-ce-8.2 连接MySQL 8.x及以上数据库时,发现即使按照默认的规则,将与MySQL 8.x数据库对应的jar包放到Kettle的\data-integration\lib目录下,并且正确的填写数据库连接信息后,仍然不能连接成功。

【问题概述】

这还真不是kettle的锅,而是MySQL不讲武德,:-)

怎么说呢?因为Kettle 8默认支持的MySQL驱动类名称仍是MySQL 5.x版本jar包的名称com.mysql.jdbc.Driver,但是MySQL 8的驱动升级后不再兼容老版本,新的类名变为 com.mysql.cj.jdbc.Driver,所以就会出现明明把MySQL8的驱动放到kettle的lib中去了怎么就不行的情况。

【问题探秘】

我们都知道,JAVA的jar驱动包其实就是zip压缩包,例如下面的两个mysql驱动包:

?我们可以用解压缩工具例如winRAR直接打开,如下图所示:

?(TMD,老版本的MySQL5.x的jar包里面这么乱啊)可以发现,里面都包含了真正的驱动类:Driver.class;进一步的,我们可以用文本的方式打开来一探究竟:

?上面的是MySQL5.x版本的Driver.class,我们可以看到里面有我专门用黄色荧光笔标记出来的com.mysql.jdbc.Driver的字样;

??上面的是MySQL8.x版本的Driver.class,尼玛,里面清清楚楚的写了:Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'.翻译过来就是`com.mysql.jdbc.Driver'. 已经废弃了,新的驱动类是? `com.mysql.cj.jdbc.Driver',至此案情大名,罪魁祸首就是MySQL团队,kettle作为第三方很无辜,无罪释放!

MySQL你大爷的,你升级归升级,没事你改什么类名称啊?!

kettle说,新、老两套名称,我只能默认一个啊,哪边都有庞大的用户群,好锤子哦,啷个办嘛!干脆我开放一个类名输入框,让你自己来输;

【解决思路】

可以分为如下四种方法:

1.降级使用MySQL 5.x的驱动包,可以找较新的mysql-connector-java-5.1.49.jar放到kettle的lib中:

KETTLE安装及连接MySQL数据库_南蛮滴犊的博客-CSDN博客_kettle连接mysql数据库kettle安装(默认电脑已经安装java,并配置环境变量,该版本kettle对应jdk1.8)kettle下载地址:https://community.hitachivantara.com/docs/DOC-1009855下拉页面到此处,点击此处弹出下面界面,并弹出下载框点击浏览可更改下载地址打开kettle界面进入下载好的文件夹D:\pdi-ce-7.1....https://blog.csdn.net/sinat_32716451/article/details/81413658
2.仍然使用MySQL 8.x驱动jar包,但是需要使用JNDI的连接方式,将连接参数明文的写入jdbc.properties文件中:

3.仍然使用MySQL 8.x驱动jar包,但是连接时选择通用数据库即Generic Database连接方式,手动配置数据库URL和驱动包类名称:

kettle连接mysql8.0以上版本_梦幻安然-CSDN博客_kettle mysql8kettle连接mysql8.0以上版本1、下载mysql8.0的jar驱动https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.192、将下载好的mysql的驱动放到kettle安装文件中的lib下面,然后重启Spoon3、连接的两种方式第一种方式:数据库类型选择Generic Database自定义连接...https://blog.csdn.net/qq_42891999/article/details/104880596

?4.仍然使用MySQL 8.x驱动包,也还用Native(JDBC),但是需要在选项中额外修改驱动包类名:

Kettle中Spoon 使用MySQL8.0的相关配置_ouheng6364的博客-CSDN博客_kettle mysql8.0最近由于工作需要,我便开始学习使用起了 Kettle进行数据处理。由于使用了mysql8.0的数据,kettle的连接不正常,于是开始了踩坑过程。1、下载mysql8.0的java驱动地址:msyql8.0 java 连接驱动2、驱动jar包导入kettle将下载好的mysql的驱动放到kettle安装文件中的lib下面,然后重启Spoon,以便进行后续操作。3、连接my...https://blog.csdn.net/ouheng6364/article/details/99703334

【方法评价】

第1种方法最懒,也最为简单粗暴,也能够连上用一会儿,但是,注意但是来了,这种方法不稳定,毕竟是使用的MySQL5.x的驱动来连接MySQL8.x的数据库,例如我的电脑(win10+jdk-8u202-windows-x64)采用这种方式后,电脑休眠后再进来,原封不动,之前能够连上的就怎么也连不上了,退出Spoon关闭kettle再重新启动都不行,所以不推荐这种方法;

第2种方法别辟蹊径,但是使用JNDI连接需要将数据库的连接参数都明文的写在kettle的配置文件里面,不灵活,也不够安全;

第3种方法和第4种方法都比较好,不存在不匹配的问题,本质上也是一样的,使用的仍然是对应的MySQL8.x驱动,不存在适配的问题!

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-15 18:21:59  更:2021-12-15 18:23:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:22:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码