MySQL的新版JDBC驱动(5.1.7)一个超级恶心的问题
2016-08-06 17:13
337 查看
文章转自:http://www.oschina.net/question/12_106
——————————————————-分割线——————————————————-
涉及的 MySQL Connector/J 的版本是MySQL网站上提供的最新的 5.1.7 这个版本。
问题是这样的,假设表中有自动增长的字段id,我们在插入数据的时候,可以通过 ResultSet rs = ps.getGeneratedKeys() 这样的代码来获取到所插入数据产生的id值。这个方法在 5.1.7 之前的任何一个版本都是可行的,但在 5.1.7 这个版本就会抛出一个异常:
java.sql.SQLException: !Statement.GeneratedKeysNotRequested!
也就是相当于几乎所有的插入语句都会出错,昨天晚上我更新了 oschina 的 jdbc 驱动到 5.1.7 这个版本,就没有测试数据的插入,结果早上发布数据的时候出现了上面这个提示。
在 MySQL 网站上查到了这个问题的bug说明,在 5.1.7 版本的驱动中,如果要使用 getGeneratedKeys 这个方法的前提是你不能使用 PreparedStatement ,而必须用 Statement 来替代,而且还要增加一个参数如下:
这简直是扯淡嘛!!!所以唯一的解决办法就是不要用 5.1.7 这个版本。
关于这个问题的bug说明请看:http://bugs.mysql.com/bug.php?id=41448
——————————————————-分割线——————————————————-
涉及的 MySQL Connector/J 的版本是MySQL网站上提供的最新的 5.1.7 这个版本。
问题是这样的,假设表中有自动增长的字段id,我们在插入数据的时候,可以通过 ResultSet rs = ps.getGeneratedKeys() 这样的代码来获取到所插入数据产生的id值。这个方法在 5.1.7 之前的任何一个版本都是可行的,但在 5.1.7 这个版本就会抛出一个异常:
java.sql.SQLException: !Statement.GeneratedKeysNotRequested!
也就是相当于几乎所有的插入语句都会出错,昨天晚上我更新了 oschina 的 jdbc 驱动到 5.1.7 这个版本,就没有测试数据的插入,结果早上发布数据的时候出现了上面这个提示。
在 MySQL 网站上查到了这个问题的bug说明,在 5.1.7 版本的驱动中,如果要使用 getGeneratedKeys 这个方法的前提是你不能使用 PreparedStatement ,而必须用 Statement 来替代,而且还要增加一个参数如下:
Statement stmt =connection.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY); stmt.executeUpdate("INSERT INTO table values(1,2)",Statement.RETURN_GENERATED_KEYS); ResultSet rs = stmt.getGeneratedKeys(); //This works
这简直是扯淡嘛!!!所以唯一的解决办法就是不要用 5.1.7 这个版本。
关于这个问题的bug说明请看:http://bugs.mysql.com/bug.php?id=41448
相关文章推荐
- 关于MySQL的JDBC驱动的问题
- 有关jdbc驱动的问题,java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
- 一个函数引发的MySQL驱动问题
- oracle 11.02新版在win7下安装与Tomcatr的连接池以及jdbc驱动的问题
- 使用连接mysql的jdbc驱动6.0.6版引发的问题
- mysql 数据库8.0版本,jdbc驱动连接问题
- jdbc的MySQL新旧驱动问题
- MySQL版本与JDBC驱动的问题
- 使用连接mysql的jdbc驱动最新版引发的问题
- 使用连接mysql的jdbc驱动最新版引发的问题
- 一个MySQL-JDBC驱动bug引起的血案……
- mysql jdbc驱动的一个bug:datetime型数据'0000-00-00 00:00:00' 的读取
- mysql驱动引起的jdbc4.MySQLSyntaxErrorException: Unknown character set: 'utf8mb4'问题解决
- Mysql JDBC驱动版本与Mysql版本的对应问题
- 一个MySQL-JDBC驱动bug引起的血案……
- MyEclipse配置MySQL JDBC驱动注意的问题
- Sqoop安装与MapReduce读MySql写HDFS加载不了JDBC驱动问题
- Mysql JDBC驱动版本与Mysql版本的对应问题
- 使用连接mysql的jdbc驱动最新版引发的问题
- JDBC for MySQL驱动版本问题