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
一