关于Mysql报错:java.sql.SQLException: The statement (1) has no open cursor
今天写程序的时候遇到了这个报错,网上找了一番,目前也没看到具体的解决办法,有些说是mysql驱动的版本问题。
主要复现手段的话是开启数据库的query cache,然后连接url加上useCursorFetch=true,
我的产生原因主要是用了Statement来获取建表语句
String sql = "show create table " + tableName; //有bug -- Statement stmt = outercon.createStatement(); ResultSet rs = stmt.executeQuery(sql);
后来使用PrepareStatement就没问题了,
String sql = "show create table " + tableName;
PreparedStatement ps = outercon.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
比较奇怪的是,后来改回用statement的方式,也没报错了,这就很尴尬。
特此记录一下。