kettle8.3版本mysql8驱动异常问题解决方式

一、背景

最近在用kettle的时候,客户现场用的是kettle8.3版本,业务系统数据库是mysql8。

二、问题

kettle连接业务系统mysql数据库时发现,连接失败,提示驱动异常,检查了驱动,已经放到kettle的lib文件夹下了;

然后根据报错问了AI,AI的意思是mysql官方的驱动中的类是com.mysql.cj.jdbc.Drivercom.mysql.jdbc.Driver分别适配mysql8和mysql5,而报错的内容选择的驱动类是过时的、旧版的org.gjt.mm.mysql.Driver

三、解决方式

方式1 直接修改驱动类(失败)

直接在“特征列表”修改驱动类Driver Class 为com.mysql.cj.jdbc.Driver。

结果是修改了但是保存不了。

当然如果有大佬知道怎么改能保存的,希望不吝赐教。

(个人觉得,8.x版本的文件管理和UI还是比较好用的比起9.x版本)

方式2 升级kettle版本(成功,推荐)

我又用kettle9.4版本连接了一下,可以,打开特征列表发现驱动类是com.mysql.cj.jdbc.Driver

需要注意,虽然这个驱动类在一定程度上兼容mysql5,但还是推荐先用简单的语法抽取到我们的目标数据库的一个中间表后再处理。

方法3 使用旧版驱动(成功,不推荐)

下载旧版的mysql驱动,里面有驱动类org.gjt.mm.mysql.Driver,MySQL驱动下载

选择版本5.x版(我试过了最多到5.49版本是有的);

下载解压后,将里面的jar包(两个随便放一个就行)放到kettle的lib文件夹下,重启kettle。

这个方法的注意点和方式2一样,先抽取到中间库再处理。

方法 4 JNDI方式连接(成功,很不推荐)

选择JDNI方式,设置JDNI的名称,这里的名称后面要用到;

打开kettle目录下的simple-jndi文件夹下的jdbc.properties文件

在最下面添加如图所示的mysql代码

注意前面的kettle_mysql8就是JNDI名称

# mysql8 kettle 配置
kettle_mysql8/type=javax.sql.DataSource
kettle_mysql8/driver=com.mysql.cj.jdbc.Driver
kettle_mysql8/url=jdbc:mysql://localhost:3306/kettle?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
kettle_mysql8/user=root
kettle_mysql8/password=123456

其中需要改成自己的部分的有

url:IP地址:端口号/数据库名,编码方式characterEncoding=编码方式(一般都是utf8,后面的时区我设定的是上海,国内设这个就行)

剩下的就是用户名和密码

方法5 自定义连接(成功,非常不推荐)

连接是没问题,但是好像不能作为存储库,例如资源库;

还是说一下配置方式吧,就是选择通用数据库 Generic database

配置自定义URL:

jdbc:mysql://localhost:3306/kettle?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=CONVERT_TO_NULL

注意替换IP地址:端口号/数据库名

用户名和密码就是数据库的用户名和密码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值