For long running queries on MySQL, you might get this exception:
Communications link failure due to underlying exception: ** BEGIN NESTED EXCEPTION ** java.io.EOFException STACKTRACE: java.io.EOFException at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1934) etc.
The MySQL server parameter "net_write_timeout" defaults to 60 seconds.
I found that by increasing this to a larger value, the exception goes away.
Then we do not have to turn off the result set cursor and we don't need
to read the entire result set into memory by turning off result set streaming (cursor emulation)
This parameter is set in my.ini. I set it to 1800, but probably a
smaller value would suffice.
Please also see the chapter with the nice title "MySQL server has gone away" over here:
We found several times that v5.x of the MySQL JDBC driver doesn't play along nicely with Kettle.
vanayka found out the same in this thread: http://forums.pentaho.org/showthread.php?p=184717
Make sure that you set the correct JDBC options like for example in the case of a Unicode target database:
useUnicode = true characterEncoding = utf8 characterSetResults = utf8
Even if you don't have a target Unicode database, it makes sense to set the encodings explicitly in those situations where source and target encodings are different etc.