前言

近期项目上经常用到ETL(数据抽取转换加载),就想到了之前用过的kettle工具,下班回家想着再玩玩这个工具吧,结果在连接MySQL时,遇到了各种问题,就顺手整理记录一下。所以今天晚上的主题是:在使用kettle ETL工具创建MySql DB连接时,由于MySQL驱动的版本原因,连接MySQL后,一直测试不通过,如下为具体解决方案

一、驱动安装方法

1、下载需要连接数据库的jar包驱动(注意版本)(MySQL驱动包下载地址

2、将jar包驱动放到目录D:\ProgramFiles\kettle\data-integration\lib

3、重启kettle即可

二、错误描述

1、MySQL jdbc jar包版本不对或缺少jdbc jar包

错误连接数据库 [208mysql] : org.pentaho.di.core.exception.KettleDatabaseException: 
Error occurred while trying to connect to the database

Driver class 'com.mysql.cj.jdbc.Driver' could not be found, make sure the 'Generic database' driver (jar file) is installed.
com.mysql.cj.jdbc.Driver

说明:官方支持的jar包是MySQL-JDBC-5.1.jar,但是直接使用后,会出现如下第二种错误

2、MySQL数据库版本高于MySQL jdbc jar包

Unknown initial character set index '255' received from server. Initial clie

三、kettle支持的MySQL jdbc jar包

从官网可以看到,官方支持的是MySQL-JDBC-5.1.jar

说明:所以如果使用了MySQL-JDBC-5.1.jar包,但是MySQL数据库版本高于此包的版本就说出现上述第一个问题

结论:由于目前MySQL安装包基本都高于此版本,所以改方案无法使用

四、解决方案一

根据上述描述可以看出,目前无法使用官方支持的jar包(MySQL-JDBC-5.1.jar),只能使用与MySQL版本一致或高于MySQL版本的jar包,如mysql-connector-j-8.2.0.jar

1、将mysql-connector-j-8.2.0.jar放置lib目录下,如下图

2、如下图配置,选择Generic database

自定义连接url:jdbc:mysql://localhost:3306/db01?useUnicode=true&characterEncoding=utf8

自定义驱动类名称:com.mysql.cj.jdbc.Driver

 如下表格为自定义驱动类名称对照表

版本driver-class
5.1.47以前org.git.mm.mysql.Driver
6以前com.mysql.jdbc.Driver
6以后com.mysql.cj.jdbc.Driver

3、验证

配置完成后,点击测试即可

 五、解决方案二

1、把官方支持的jar包以及高版本jar包同时放到lib目录下

 2、如下图,选择MySQL类型,并按照如下设置

 3、测试

六、总结

如上是通过kettle连接MySQL时遇到的各种情况,如有错漏请大伙儿及时指出哈

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐