mysql连接报java.math.BigInteger cannot be cast to java.lang.Long异常,怎么解决

programmer-阿杰 2017-10-11 11:33:11
连接服务器上的数据库没问题,但是连接本机的就会出现java.math.BigInteger cannot be cast to java.lang.Long异常,用的都是MySQL,数据表都是一样的,下面是报错信息:
10:37:23,902 ERROR org.apache.ibatis.logging.slf4j.Slf4jImpl error:39 -> Could not get a databaseId from dataSource
java.sql.SQLException: java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
at com.mysql.jdbc.ConnectionImpl.buildCollationMapping(ConnectionImpl.java:1041)
at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3481)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2445)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2215)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:813)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:334)
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:119)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:143)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:132)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.initializeAutomaticTestTable(C3P0PooledConnectionPoolManager.java:772)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.createPooledConnectionPool(C3P0PooledConnectionPoolManager.java:696)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.getPool(C3P0PooledConnectionPoolManager.java:257)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.getPool(C3P0PooledConnectionPoolManager.java:271)
at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:128)
at org.apache.ibatis.mapping.VendorDatabaseIdProvider.getDatabaseProductName(VendorDatabaseIdProvider.java:76)
at org.apache.ibatis.mapping.VendorDatabaseIdProvider.getDatabaseName(VendorDatabaseIdProvider.java:61)
at org.apache.ibatis.mapping.VendorDatabaseIdProvider.getDatabaseId(VendorDatabaseIdProvider.java:49)
at org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:445)
at org.mybatis.spring.SqlSessionFactoryBean.afterPropertiesSet(SqlSessionFactoryBean.java:336)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1625)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1562)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:743)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4853)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5314)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long
at com.mysql.jdbc.ConnectionImpl.buildCollationMapping(ConnectionImpl.java:992)
... 48 more
...全文
11965 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
鑫鑫香印 2019-10-14
  • 打赏
  • 举报
回复 2
这个情况我也有遇到 到mysql官网下个最新包就可以了 完了重新导入这个jar包 链接:https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.17 希望能帮助到大家。
weixin_42774112 2019-03-07
  • 打赏
  • 举报
回复
8楼结帖,挽尊
阿南艾米思达 2018-10-16
  • 打赏
  • 举报
回复
引用 8 楼 qq_22624479 的回复:

我也报的这个错误,弄了一天才弄好,,,,
错误描述:DriverManager.getConnection(url, user, password);的时候,报java.math.BigInteger cannot be cast to java.lang.Long错误
解决流程:百度一顿没结果,我用的是免安装版mysql,以为是MySQL编码配置问题,卸了,重装,并没什么用。最后抱着试一试的态度,把链接mysql——jar包换成最新,发现连上了,啊啊啊~~~~~~~~原来是jar包版本和mysql版本不一致(mysql-connector-java-5.1.26.jar 换成了mysql-connector-java-5.1.46.jar), 其实 也不明白这两个版本差在哪,感觉都是5.1下的,应该差不多把,就这样把,希望给大家有帮助。


帮大忙了 jar包跟mysql版本不匹配
u010444829 2018-10-15
  • 打赏
  • 举报
回复
换下高版本的5.1.46版本的jar包就行了
Onlyswd 2018-07-31
  • 打赏
  • 举报
回复
我这里也是啊,我换了jar包怎么还是连不上啊
puhahaha 2018-07-31
  • 打赏
  • 举报
回复
引用 13 楼 weixin_42432097 的回复:
[quote=引用 8 楼 qq_22624479 的回复:]

我也报的这个错误,弄了一天才弄好,,,,
错误描述:DriverManager.getConnection(url, user, password);的时候,报java.math.BigInteger cannot be cast to java.lang.Long错误
解决流程:百度一顿没结果,我用的是免安装版mysql,以为是MySQL编码配置问题,卸了,重装,并没什么用。最后抱着试一试的态度,把链接mysql——jar包换成最新,发现连上了,啊啊啊~~~~~~~~原来是jar包版本和mysql版本不一致(mysql-connector-java-5.1.26.jar 换成了mysql-connector-java-5.1.46.jar), 其实 也不明白这两个版本差在哪,感觉都是5.1下的,应该差不多把,就这样把,希望给大家有帮助。

可不可以请问您在哪里换的jar包,我用的idea,不知道去哪里换jar包.....[/quote]mysql官网......
TrevlinLit 2018-06-11
  • 打赏
  • 举报
回复
引用 8 楼 qq_22624479 的回复:
我也报的这个错误,弄了一天才弄好,,,, 错误描述:DriverManager.getConnection(url, user, password);的时候,报java.math.BigInteger cannot be cast to java.lang.Long错误 解决流程:百度一顿没结果,我用的是免安装版mysql,以为是MySQL编码配置问题,卸了,重装,并没什么用。最后抱着试一试的态度,把链接mysql——jar包换成最新,发现连上了,啊啊啊~~~~~~~~原来是jar包版本和mysql版本不一致(mysql-connector-java-5.1.26.jar 换成了mysql-connector-java-5.1.46.jar), 其实 也不明白这两个版本差在哪,感觉都是5.1下的,应该差不多把,就这样把,希望给大家有帮助。
可不可以请问您在哪里换的jar包,我用的idea,不知道去哪里换jar包.....
sinat_19250161 2018-04-18
  • 打赏
  • 举报
回复
你看看本地 和服务器 数据库 报错的 字段类型一样吗 还有字段长度
  • 打赏
  • 举报
回复
看看你电脑上这个字段的数据类型。应该是数据类型的问题
布丁西西里 2018-04-17
  • 打赏
  • 举报
回复
我也报的这个错误,弄了一天才弄好,,,, 错误描述:DriverManager.getConnection(url, user, password);的时候,报java.math.BigInteger cannot be cast to java.lang.Long错误 解决流程:百度一顿没结果,我用的是免安装版mysql,以为是MySQL编码配置问题,卸了,重装,并没什么用。最后抱着试一试的态度,把链接mysql——jar包换成最新,发现连上了,啊啊啊~~~~~~~~原来是jar包版本和mysql版本不一致(mysql-connector-java-5.1.26.jar 换成了mysql-connector-java-5.1.46.jar), 其实 也不明白这两个版本差在哪,感觉都是5.1下的,应该差不多把,就这样把,希望给大家有帮助。
卡布奇诺er 2018-04-17
  • 打赏
  • 举报
回复
引用 9 楼 qq_32969313 的回复:
((BigDecimal)userMap.get("workTime")).longValue()
对的,Oracle也会有同样的现象,像select count(*)返回的是BigDecimal,而不是Integer,所以数据库查询返回数字类的字段时,最好都用BigXXX来获取,然后在获取对应的intValue,longValue等
姚__ 2018-04-17
  • 打赏
  • 举报
回复
((BigDecimal)userMap.get("workTime")).longValue()
programmer-阿杰 2017-10-13
  • 打赏
  • 举报
回复
引用 6 楼 JUST_lOVE_LE 的回复:
[quote=引用 4 楼 qq_35525955 的回复:] [quote=引用 3 楼 JUST_lOVE_LE 的回复:] 就是说你代码的类型是Long,但实际上是BigInteger,估计你数据库的字段类型是double之类的吧,你可以转换为BigInteger类型
但是使用服务器上的数据库没有出现这个问题,使用自己本地的就出错了[/quote] 我没有明白你的意思,什么叫使用服务器上的数据库没有出现问题?是指你把你的程序发布到服务器上跑的时候没有出现类型转换异常吗[/quote] 是的
北落师门_Orz 2017-10-12
  • 打赏
  • 举报
回复
引用 4 楼 qq_35525955 的回复:
[quote=引用 3 楼 JUST_lOVE_LE 的回复:] 就是说你代码的类型是Long,但实际上是BigInteger,估计你数据库的字段类型是double之类的吧,你可以转换为BigInteger类型
但是使用服务器上的数据库没有出现这个问题,使用自己本地的就出错了[/quote] 我没有明白你的意思,什么叫使用服务器上的数据库没有出现问题?是指你把你的程序发布到服务器上跑的时候没有出现类型转换异常吗
programmer-阿杰 2017-10-11
  • 打赏
  • 举报
回复
引用 1 楼 xwn_2016 的回复:
这不是很明显了么,报错信息 检查一下环境吧
环境是正确的
北落师门_Orz 2017-10-11
  • 打赏
  • 举报
回复
就是说你代码的类型是Long,但实际上是BigInteger,估计你数据库的字段类型是double之类的吧,你可以转换为BigInteger类型
xwn_2016 2017-10-11
  • 打赏
  • 举报
回复
这不是很明显了么,报错信息 检查一下环境吧
programmer-阿杰 2017-10-11
  • 打赏
  • 举报
回复
引用 3 楼 JUST_lOVE_LE 的回复:
就是说你代码的类型是Long,但实际上是BigInteger,估计你数据库的字段类型是double之类的吧,你可以转换为BigInteger类型
但是使用服务器上的数据库没有出现这个问题,使用自己本地的就出错了
m0_37683546 2017-10-11
  • 打赏
  • 举报
回复
严谨一点还是手动转化过来

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧