【ETL】Kettle连接MySQL疑难问题及解决技巧

本文介绍了Kettle连接MySQL时遇到的问题,包括指定驱动问题,解决AS关键字不起作用的故障,以及在Pentaho Server上配置JNDI的注意事项。重点在于解决Kettle使用Native JDBC连接时对MySQL 8.0以上版本不兼容的驱动问题,以及如何清除Kettle的db.cache来解决列名显示异常的问题。同时,提供了在Pentaho Server中配置JNDI以避免驱动冲突的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 指定驱动

一般来说,为了方便配置,在kettle中新建mysql连接时,都选择Native(JDBC)方法,这种方法虽然快捷,但是不能指定驱动类型,而且kettle默认使用的是org.gjt.mm.mysql.Driver,而mysql 8.0以上connector已经不再支持这个包名,所以,会出现明明已经将mysql-connector-java-8.0.xx.jar包拷贝到lib目录下,但还是报错说找不到驱动,这时只能用jndi方法设置kettle使用com.mysql.cj.jdbc.Driver作为驱动。
data-integration\simple-jndi目录下有文件jdbc.properties在此文件中新建jndi配置:

mysql_test/type=javax.sql.DataSource
mysql_test/driver=com.mysql.cj.jdbc.Driver
mysql_test/url=jdbc:mysql://your-host:3306/your-db?useUnicode=true&characterEncoding=utf-8&disableMariaDbDriver
mysql_test/user=user-name
mysql_test/password=your-password

如上设置后,重启kettle,新建数据库连接,选择mysql数据库,选择jndi,在左边JNDI名称中填入mysql_test,完成配置,之后kettle就会使用com.mysql.cj.jdbc.Driver作为驱动。
在这里插入图片描述

注意:
(1)在MySQL新版本中,com.mysql.jdbc.Driver已经废弃,应使用新类名com.mysql.cj.jdbc.Driver
(2)如果同时要连接mariadb和mysql数据库,会出现mariadb和mysql数据库驱动并存的情况,一般来说jdbc:mysql会优先使用mariadb的驱动,所以这里如果要使用mysql驱动,必须加上选项disableMariaDbDriver,禁止使用mariadb驱动来连接mysql数据库
参考:
Having MariaDB and MySQL Drivers in the Same Classpath
Since MariaDB aims to be a drop-in replacement for MySql, the driver permits connection strings beginning with “jdbc:mariadb” or “jdbc:mysql”. To permit having the MySQL and MariaDB drivers on the same classpath, since version 1.5.9, the MariaDB driver doesn’t accept connection strings beginning with “jdbc:mysql” if the “disableMariaDbDriver” option is set.
jdbc:mysql://localhost:3306/db?user=someUser&disableMariaDbDriver won’t be accepted by the MariaDB driver, permitting having MySQL and MariaDB in the same classpath without interfering.

2. AS关键字不起作用或者报错

SELECT id AS myid FROM test

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值