java调用kettle作业时,数据库连接失败,而使用kettle客户端执行作业则ok!
错误:
1 org.pentaho.di.core.exception.KettleDatabaseException:Erroroccured while trying to connect to the database 2 ... 3 Error connecting to database: (using class org.gjt.mm.mysql.Driver) 4 ... 5 java.lang.NullPointerException
原因:一定是java项目引入mysql驱动版本和kettle版本存在在矛盾,故一定要找到对应mysql驱动版本,不要想着其他地方可能有错,不然就时白费功夫(本人花了2两天时间的证明)
一、版本一致
kettle6.1+jdk1.7+?
kettle7.1+jdk1.8+mysql-connector-java5.1.49
二、其他错误
①
Driver class ‘org.gjt.mm.mysql.Driver’ could not be found, make sure the ‘MySQL’ driver (jar file) is installed. org.gjt.mm.mysql.Driver
原因:缺少数据库驱动
解决方法:
1、通过cmd命令进入mysql安装目录下的bin目录内:可以使用d:命令直接进入d盘,然后再通过cd (bin目录的路径)
2、使用mysql -u 用户名 -p,输入密码即可进入mysql的欢迎界面,随机看到mysql的版本
3、去https://mvnrepository.com/找到对应版本驱动
Communications link failure:The last packet sent successfully to the server was 0 milliseconds ago
原因:Mysql服务器默认的“wait_timeout”是8小时,也就是说一个connection空闲超过8个小时,Mysql将自动断开该connection。这就是造成上面的异常的问题所在。
解决办法:启动mysql,然后输入mysql -u用户名 -p密码进入MySQL,再输入
show global variables like ‘wait_timeout’;
这时输入指令
1、set global wait_timeout=604800;
2、set global interactive_timeout=604800;