当前位置:网站首页>(Kettle) pdi-ce-8.2 连接MySQL8.x数据库时驱动问题之终极探讨及解决方法分析
(Kettle) pdi-ce-8.2 连接MySQL8.x数据库时驱动问题之终极探讨及解决方法分析
2022-08-04 05:24:00 【superchao1982】
本文是对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和驱动包类名称:
4.仍然使用MySQL 8.x驱动包,也还用Native(JDBC),但是需要在选项中额外修改驱动包类名:
【方法评价】
第1种方法最懒,也最为简单粗暴,也能够连上用一会儿,但是,注意但是来了,这种方法不稳定,毕竟是使用的MySQL5.x的驱动来连接MySQL8.x的数据库,例如我的电脑(win10+jdk-8u202-windows-x64)采用这种方式后,电脑休眠后再进来,原封不动,之前能够连上的就怎么也连不上了,退出Spoon关闭kettle再重新启动都不行,所以不推荐这种方法;
第2种方法别辟蹊径,但是使用JNDI连接需要将数据库的连接参数都明文的写在kettle的配置文件里面,不灵活,也不够安全;
D:\Program Files\kettle\data-integration\simple-jndi目录下:
MYSQL8_DB/type=javax.sql.DataSource
MYSQL8_DB/driver=com.mysql.cj.jdbc.Driver
MYSQL8_DB/url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT
MYSQL8_DB/user=root
MYSQL8_DB/password=123456
第3种方法比较好,不存在不匹配的问题,本质上是直接写数据库连接的URL,使用的仍然是对应的MySQL8.x驱动,不存在适配的问题!
第4种方法不知道那个帖子的作者是怎么做的,看他的图里面com.mysql那个jar包的名字都写掉了前面的c还能搞出来也是服了,反正对于pdi-ce-8.2版本我尝试了很久都不行,最后我使用新版本的pdi-ce-9.1了才行(要在数据库名称后面加上时区标识:&serverTimezone=Asia/Shanghai),
如下图所示:
边栏推荐
- DP4398:国产兼容替代CS4398立体声24位/192kHz音频解码芯片
- Plus版SBOM:流水线物料清单PBOM
- 9. Dynamic SQL
- CentOS7 —— yum安装mysql
- C Expert Programming Chapter 4 The Shocking Fact: Arrays and pointers are not the same 4.1 Arrays are not pointers
- 企业需要知道的5个 IAM 最佳实践
- el-Select 选择器 底部固定
- JS basics - forced type conversion (error-prone, self-use)
- C Expert Programming Chapter 4 The Shocking Fact: Arrays and pointers are not the same 4.2 Why does my code not work
- npm安装依赖报错npm ERR! code ENOTFOUNDnpm ERR! syscall getaddrinfonpm ERR! errno ENOTFOUND
猜你喜欢
7.18 Day23----标记语言
[C language advanced] program environment and preprocessing
word 公式编辑器 键入技巧 | 写数学作业必备速查表
Delphi-C端有趣的菜单操作界面设计
idea设置识别.sql文件类型以及其他文件类型
MySQL日志篇,MySQL日志之binlog日志,binlog日志详解
The idea setting recognizes the .sql file type and other file types
你以为border-radius只是圆角吗?【各种角度】
OpenSSF 安全计划:SBOM 将驱动软件供应链安全
《看见新力量》第四期免费下载!走进十五位科技创业者的精彩故事
随机推荐
As soon as flink cdc is started, the CPU of the source Oracle server soars to more than 80%. What is the reason?
C专家编程 第5章 对链接的思考 5.3 函数库链接的5个特殊秘密
《看见新力量》第四期免费下载!走进十五位科技创业者的精彩故事
7、特殊SQL的执行
4.1 声明式事务之JdbcTemplate
C Expert Programming Chapter 4 The Shocking Fact: Arrays and Pointers Are Not the Same 4.5 Other Differences Between Arrays and Pointers
4.3 基于注解的声明式事务和基于XML的声明式事务
C Expert Programming Chapter 4 The Shocking Fact: Arrays and Pointers Are Not the Same 4.3 What is a Declaration and What is a Definition
Shocked, 99.9% of the students didn't really understand the immutability of strings
Uni-app 小程序 App 的广告变现之路:全屏视频广告
C Expert Programming Chapter 5 Thinking about Linking 5.3 5 Special Secrets of Library Linking
自动化测试的成本高效果差,那么自动化测试的意义在哪呢?
Grain Mall - Basics (Project Introduction & Project Construction)
SLSA 框架与软件供应链安全防护
Can 't connect to MySQL server on' localhost3306 '(10061) simple solutions
MySQL database (basic)
9. Dynamic SQL
8、自定义映射resultMap
5个开源组件管理小技巧
The 2022 PMP exam has been delayed, should we be happy or worried?