Kettle连接MySQL8报错信息:
今天,由于工作需要,我把我的MySQL5.7卸载了,然后重新安装了MySQL8.1,因为MySQL5.7这个版本里没有 REGEXP_SUBSTR(),REGEXP_INSTR()这些内置的函数。安装后,当我使用Kettle链接数据库的时候就发生异常了,然后是满世界的找,在网络上找了很多关于Driver class ‘org.gjt.mm.mysql.Driver‘ could not be found的解决办法,几乎都是说没有MySQL的驱动包,只要把MySQL8的驱动包下载后,放到Kettle的安装目录的lib目录下,然后重新打开kettle就可以了。
的确是这样,没有MySQL的驱动包是会报这个错误,于是我下载了MySQL8的驱动包并放到了Kettle的lib目录下,可是异常依旧存在。最后,终于找到了解决的办法,现在把解决的办法说道说道:
问题分析:
我以前用的MySQL版本是5.7,Kettle默认使用的MySQL的驱动的包路径org.gjt.mm.mysql.Driver,而以前的版本的MySQL的驱动包的路径是这个,所以Kettle能正常找到对应的驱动程序,顺利与数据据连接。
新版本的MySQL8的驱动与以往不同,我下载的驱动包是mysql-connector-j-8.1.0.jar,这个包的包路径是com.mysql.cj.jdbc.Driver。
解决方法:
1、先到官网或者Maven仓库去下载最新版本的mysql-connector驱动程序包。我下载的是mysql-connector-j-8.1.0.jar,针对MySQL8。
下载连接驱动包(根据Mysql版本下载):
Java 连接 MySQL 需要驱动包,MySQL驱动包官网下载地址:
https://dev.mysql.com/downloads/connector/j/
也可以到到 Maven 仓库 下载 对应版本的 MySQL 的驱动包:我是在这里下的。Maven Repository: Search/Browse/Explore (mvnrepository.com)
2、将下载的程序程序包mysql-connector-j-8.1.0.jar放到Kettle的安装目录的lib目录下;
3、在Kettle安装目录下找到simple-jndi找到jdbc.properties文件,在里面添加MyLSQL数据库的连接配置信息,如下:
MYSQL8_DB/type=javax.sql.DataSource
MYSQL8_DB/driver=com.mysql.cj.jdbc.Driver
MYSQL8_DB/url=jdbc:mysql://localhost:3306/test_db?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT
MYSQL8_DB/user=root
MYSQL8_DB/password=123456
保存,即出。
4、重新打开Kettle【spoon.bat】.新建一个数据库连接,连接方式选择“JNDI”,JNDI名称就是我在jdbc.properties配置时所使用的名称 MYSQL8_DB。
到此,点击【测试】,发现连接成功,保存连接。
神奇的事情发生了,我现在重新再建一个连接,连接方式使用Native(JDBC),发现居然也能正常连接了。