NutzCN Logo
问答 mysql 事务异常
发布于 81天前 作者 shine 114 次浏览 复制 上一个帖子 下一个帖子
标签:
public Result ukuToLogin(String code,String encryptedData,String iv) throws Exception{
		System.out.println(code+"...................ukulogin");
		if(StringUtils.isEmpty(code)||StringUtils.isEmpty(encryptedData)||StringUtils.isEmpty(iv)) {
			return Result.error("参数不能为空");
		}
		Trans.begin();
		String url = "https://api.weixin.qq.com/sns/jscode2session?appid="+appid+"&secret="+secret+"&js_code="
				+ code + "&grant_type=authorization_code";
		String json = Http.get(url).getContent();
		//获取会话密钥(session_key)
        String session_key = Json.fromJson(NutMap.class, json).get("session_key").toString();
        String result = AesCbcUtil.decrypt(encryptedData, session_key, iv);
        NutMap res = Json.fromJson(NutMap.class, result);
        //保存sp_wx_user表 先查后加
        Record wxUser = dao().fetch("sp_wx_user", Cnd.where("union_id", "=", res.getString("unionId")));
        if(wxUser!=null) {//更新
        	 dao().update("sp_wx_user", Chain.make("mini_openid", res.getString("openId"))
						.add("head_img_url", res.getString("avatarUrl"))
						.add("nick_name", res.getString("nickName"))
						.add("union_id", res.getString("unionId"))
						.add("create_time", new Date()),Cnd.where("id","=",wxUser.getLong("id")));
        }else {//新增
        	 dao().insert("sp_wx_user", Chain.make("mini_openid", res.getString("openId"))
						.add("head_img_url", res.getString("avatarUrl"))
						.add("nick_name", res.getString("nickName"))
						.add("union_id", res.getString("unionId"))
						.add("create_time", new Date()));
        }
        wxUser = dao().fetch("sp_wx_user", Cnd.where("union_id", "=", res.getString("unionId")));
        if(StringUtils.isEmpty(wxUser.getString("share_canvas_url"))) {//推广海报图太阳码
   		 	String f = this.createShareCanvas(wxUser.getLong("id"));
   		 	dao().update("sp_wx_user", Chain.make("share_canvas_url", f),Cnd.where("id","=",wxUser.getLong("id")));
   		 	wxUser.put("share_canvas_url", f);
        }
        Trans.commit();
		Trans.close();
      //需要将session_key存入redis 供接下来获取手机号调用,key为openid value为session_key
    	redisService.hset("sp_session_key", res.getString("openId"), session_key);
        return Result.success("success", new NutMap().addv("wxUser", wxUser));
        
	}
com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction
        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:423)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
        at com.mysql.jdbc.Util.getInstance(Util.java:408)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:951)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2527)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2680)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2487)
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1858)
        at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1197)
        at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3461)
        at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_execute(FilterEventAdapter.java:440)
        at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3459)
        at com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl.execute(PreparedStatementProxyImpl.java:167)
        at com.alibaba.druid.pool.DruidPooledPreparedStatement.execute(DruidPooledPreparedStatement.java:497)
        at org.nutz.dao.impl.sql.run.NutDaoExecutor._runPreparedStatement(NutDaoExecutor.java:311)
        at org.nutz.dao.impl.sql.run.NutDaoExecutor.exec(NutDaoExecutor.java:96)
        at org.nutz.dao.DaoInterceptorChain.doChain(DaoInterceptorChain.java:65)
        at org.nutz.dao.impl.interceptor.DaoLogInterceptor.filter(DaoLogInterceptor.java:22)
        at org.nutz.dao.DaoInterceptorChain.doChain(DaoInterceptorChain.java:63)
        at org.nutz.dao.DaoInterceptorChain.invoke(DaoInterceptorChain.java:138)
        at org.nutz.dao.impl.sql.run.NutDaoRunner.runCallback(NutDaoRunner.java:163)
        at org.nutz.dao.impl.sql.run.NutDaoRunner._runWithTransaction(NutDaoRunner.java:109)
        at org.nutz.dao.impl.sql.run.NutDaoRunner._run(NutDaoRunner.java:93)
        at org.nutz.dao.impl.sql.run.NutDaoRunner$1.run(NutDaoRunner.java:79)
        at org.nutz.trans.Trans.exec(Trans.java:174)
        at org.nutz.dao.impl.sql.run.NutDaoRunner.run(NutDaoRunner.java:77)
        at org.nutz.dao.impl.DaoSupport.run(DaoSupport.java:242)
        at org.nutz.dao.impl.DaoSupport._exec(DaoSupport.java:254)
        at org.nutz.dao.impl.EntityOperator.exec(EntityOperator.java:58)
        at org.nutz.dao.impl.NutDao.update(NutDao.java:343)
        at com.uku.api.module.shop.services.SpUserService.ukuToLogin(SpUserService.java:140)
        at com.uku.api.module.shop.controller.SpLoginController.ukuToLogin(SpLoginController.java:83)
        at com.uku.api.module.shop.controller.SpLoginController$FM$ukuToLogin$607f41f4c6c35a23e3392fb324956863.invoke(SpLoginController.java)
        at org.nutz.mvc.impl.processor.MethodInvokeProcessor.process(MethodInvokeProcessor.java:31)
        at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
        at org.nutz.mvc.impl.processor.AdaptorProcessor.process(AdaptorProcessor.java:38)
        at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
        at org.nutz.mvc.impl.processor.ActionFiltersProcessor.process(ActionFiltersProcessor.java:58)
        at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
        at org.nutz.mvc.impl.processor.ModuleProcessor.process(ModuleProcessor.java:123)
        at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
        at org.nutz.mvc.impl.processor.EncodingProcessor.process(EncodingProcessor.java:27)
        at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
        at org.nutz.mvc.impl.processor.UpdateRequestAttributesProcessor.process(UpdateRequestAttributesProcessor.java:15)
        at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
        at com.uku.api.config.LogTimeProcessor.process(LogTimeProcessor.java:21)
        at org.nutz.mvc.impl.NutActionChain.doChain(NutActionChain.java:44)
        at org.nutz.mvc.impl.ActionInvoker.invoke(ActionInvoker.java:67)
        at org.nutz.mvc.ActionHandler.handle(ActionHandler.java:31)
        at org.nutz.mvc.NutFilter.doFilter(NutFilter.java:202)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604)
        at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
        at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
        at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
        at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
        at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
        at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
        at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604)
        at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604)
        at org.nutz.mvc.WhaleFilter.doFilter(WhaleFilter.java:171)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1596)
        at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:226)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:545)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:536)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1592)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1296)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:485)
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1562)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1211)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
        at org.eclipse.jetty.server.Server.handle(Server.java:500)
        at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:386)
        at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:562)
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:378)
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:270)
        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
        at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129)
        at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:388)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:806)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:938)
        at java.lang.Thread.run(Thread.java:748)
1 回复

文档给的范式可是这样的

try {

}
catch (Throwable e) {}
}
finally {

}

添加回复
请先登陆
回到顶部