由于用到mysql的游标,希望可以一次返回10条记录(防止OOM),为连接串里加上了useCursorFetch参数(有人要问为什么不用流式,因为我的连接不是用完就能关的,但如果不关,在流式返回后再使用同一连接就要报错)。于是问题来了。
jdbc:mysql://x.x.x.x:3306/abc?rewriteBatchedStatements=true&useCursorFetch=true
1、如果使用预编译的SQL,问号的个数不能超过65535个。
这个问题真是蛋疼啊。搞得批量插入的时候必须截断。
2、发现如果返回比较长的字符串时会被截断,最后只好又加了一个参数解决,最终的情况是这样:
this.statement = connection.prepareStatement(parsedQuery,ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);
this.statement.setFetchSize(10);
jdbc:mysql://x.x.x.x:3306/abc?rewriteBatchedStatements=true&useCursorFetch=true