使用JDBC客户端获取时,使用MySQL的UNSIGNED BIGINT问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用JDBC客户端获取时,使用MySQL的UNSIGNED BIGINT问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1706字,纯文字阅读大概需要3分钟。
内容图文
![使用JDBC客户端获取时,使用MySQL的UNSIGNED BIGINT问题](/upload/InfoBanner/zyjiaocheng/893/f9570e0e047e4c2788720543ecbd1436.jpg)
根据MySQL docs,Unsinged Bigint的最大值= 18446744073709551615
我在未加工的Bigint列中插入了值9223372036854776900(远低于最大限制).
没有显示错误.
当我尝试通过JDBC客户端以编程方式访问它时,我得到了异常:
com.mysql.jdbc.exceptions.jdbc4.MySQLDataException: ‘9223372036854776900’ in column ’10’ is outside valid range for the datatype BIGINT.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1026)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
at com.mysql.jdbc.ResultSetImpl.throwRangeException(ResultSetImpl.java:7964)
at com.mysql.jdbc.ResultSetImpl.parseLongAsDouble(ResultSetImpl.java:7248)
at com.mysql.jdbc.ResultSetImpl.getLong(ResultSetImpl.java:2946)
at com.mysql.jdbc.ResultSetImpl.getLong(ResultSetImpl.java:2911)
MySQL版本:5.5.41-0ubuntu0.14.04.1
解决方法:
正如堆栈跟踪所示,当我尝试使用ResultSet#getLong时,我能够重新创建您的问题
Long l = rs.getLong(1);
因为存储的值9223372036854776900大于Java中的(带符号)Long的最大值:9223372036854775807.
但是,我能够使用BigDecimal成功检索该值
java.math.BigDecimal bd = rs.getBigDecimal(1);
或者作为BigInteger使用
java.math.BigInteger bi = (java.math.BigInteger) rs.getObject(1);
内容总结
以上是互联网集市为您收集整理的使用JDBC客户端获取时,使用MySQL的UNSIGNED BIGINT问题全部内容,希望文章能够帮你解决使用JDBC客户端获取时,使用MySQL的UNSIGNED BIGINT问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。