Open 437865981 opened 5 years ago
1、hibernate日志(空指针异常,确定代码、值没问题,因为改成相应的sql是可以执行的):Hibernate: / update top.hb.model.UserAmount / update t_user_amount set amount=?, version=? where id=? and version=?
[2018-08-07 14:32:17,705] [http-bio-8081-exec-43] ERROR org.hibernate.engine.jdbc.spi.SqlExceptionHelper - java.lang.NullPointerException [2018-08-07 14:32:17,756] [http-bio-8081-exec-43] ERROR org.apache.struts2.dispatcher.DefaultDispatcherErrorHandler - Exception occurred during processing request: JDBC exception on Hibernate data access: SQLException for SQL [n/a]; SQ L state [HY000]; error code [3009]; could not execute statement; nested exception is org.hibernate.exception.GenericJDBCException: could not execute statement org.springframework.orm.hibernate4.HibernateJdbcException: JDBC exception on Hibernate data access: SQLException for SQL [n/a]; SQL state [HY000]; error code [3009]; could not execute statement; nested exception is org.hibernate.excepti on.GenericJDBCException: could not execute statementat at org.springframework.orm.hibernate4.SessionFactoryUtils.convertHibernbernateAccessException(on(SessionFactoryUtils.java:170) ) at at org.springframework.orm.hibernate4.HibernateTemplate.doExecute(Hib(te(HibernateTemplate.java:344) ) at at org.springframework.orm.hibernate4.HibernateTemplate.executeWithNathNativeSession(on(HibernateTemplate.java:309) ) at at org.springframework.orm.hibernate4.HibernateTemplate.findByCriteriteria(ia(HibernateTemplate.java:1006) ) at at org.springframework.orm.hibernate4.HibernateTemplate.findByCriteriteria(ia(HibernateTemplate.java:998) ) at at com.yun.common.baseclass.AbstractBaseDAO.findByDetacheachedCriteria(ia(AbstractBaseDAO.java:131) ) at at com.yun.admin.btct.service.impl.BtctServiceImpl.getUserAmountount(nt(BtctServiceImpl.java:2779) ) at at com.yun.admin.btct.service.impl.BtctServiceImpl.updateAmountDuntDetail(il(BtctServiceImpl.java:2750) ) at at com.yun.admin.btct.service.impl.BtctServiceImpl.cancelWithdrahdraw(aw(BtctServiceImpl.java:2662) ) at at sun.reflect.NativeMethodAccessorImpl.invoke0(Na0(Native Method) at at sun.reflect.NativeMethodAccessorImpl.invoke(Nat(ke(NativeMethodAccessorImpl.java:62) ) at at sun.reflect.DelegatingMethodAccessorImpl.invoke(Del(ke(DelegatingMethodAccessorImpl.java:43) ) at at java.lang.reflect.Method.invoke(Met(ke(Method.java:498) ) at at org.springframework.aop.support.AopUtils.invokeJoinpoinpointUsingReflection(on(AopUtils.java:333) ) at at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoinpoint(nt(ReflectiveMethodInvocation.java:190) ) at at org.springframework.aop.framework.ReflectiveMethodInvocation.proceedceed(ed(ReflectiveMethodInvocation.java:157) ) at at org.springframework.transaction.interceptor.TransactionInonInterceptor$or$1.proceedceedWithInvocation(on(TransactionInterceptor.java:99) ) at at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinThinTransaction(on(TransactionAspectSupport.java:282) ) at at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(Tra(ke(TransactionInterceptor.java:96) ) at at org.springframework.aop.f.f
2:mycat DEBUG日志(报NullPointerExerException,hibernate报的空指针可能是这里返回的):
java.lang.NullPointerExerException
at at java.lang.String.comparepareTo(To(String.java:1155) ~[) ~[?:1.8.0_144]
at at io.mycat.route.RouteResultsetNode.comparepareTo(To(RouteResultsetNode.java:287) ~[) ~[ ~[Mycat-server-1.6.5-release.jar:?]
:?]
at at io.mycat.route.RouteResultsetNode.comparepareTo(To(RouteResultsetNode.java:36) ~[) ~[ ~[Mycat-server-1.6.5-release.jar:?]
:?]
at at java.util.concurrent.ConcurrentHashMap.comparepareComparables(es(ConcurrentHashMap.java:732) ~[) ~[?:1.8.0_144]
at at java.util.concurrent.ConcurrentHastHashMap$TreeBin.
注:1、用的单库分表,分表确实成功,插入和查询都是没问题的
schema配置确定没问题吗?
没问题的,插入、查询都可以 ,explain查看了,确实是按规则分的表。所有的文件和代码都是测试环境跑通的,完全一致。 1,现在是测试环境完全OK,只有生产环境才有这个问题。用了阿里云服务器。服务器的环境和这个有关系吗,或者事务相关的配置? 2、测试mycat 5.5.56-MariaDB。生产环境:5.6.16
看下有木有在schema里面有木有两个表名一样的吧啊.
没有,,现在就是发现一个规律:首先查询出数据,然后更新数据,再查询一次的时候就会报错=.=
两个结局办法 : 1看下jdk版本, 2. 在报错的地方加个判断
日志 ,语句 有吗?