关于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的方式,也没报错了,这就很尴尬。

特此记录一下。

原文地址:https://www.cnblogs.com/marshwinter/p/14510757.html