作为刚接触Kettle的菜鸟级选手,在使用Kettle抽取数据的时候碰到如下异常:
org.pentaho.di.core.exception.KettleDatabaseException:
Couldn't get row from result set
事务(进程 ID 56)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务。
查了一下,这个异常的原因是不同组件同时操作一个表造成的,但是想了想好像我的流程里面没有同时更新或者插入同一张表。。。。等等,插入更新组件上面的2是什么意思,又查了一下,原来所谓的复制2份等于是开了2个线程在同步数据,那就的确是因为同时操作同一个表造成的了。
解决方法:
第一种:将插入更新复制份数设置为1份;
第二种:将插入更新中的 提交记录数量 设置为1,可以解决问题,但是这样的话等于没有批量提交,肯定会很慢;
补充:我用的是sqlserver,同事用的oracle设置为2份没遇到这个问题