明明已经设置了setAutoCommit(false);为啥还是报错AutoCommit 模式设置为"true"时,无法调用回滚操作.
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了明明已经设置了setAutoCommit(false);为啥还是报错AutoCommit 模式设置为"true"时,无法调用回滚操作.相关的知识,希望对你有一定的参考价值。
代码如下:
public class TranscationInterceptor extends AbstractInterceptor
DBUtil db=new DBUtil();
@Override
public String intercept(ActionInvocation invocation) throws Exception
try
db.getConnection().setAutoCommit(false);
String resultCode = invocation.invoke();//调用action业务方法
db.getConnection().commit();//提交事务
return resultCode;
catch(Exception e)
db.getConnection().rollback();
throw e;
finally
db.closed();
可是仍然报错
type Exception report
message AutoCommit 模式设置为“true”时,无法调用回滚操作。
description The server encountered an internal error that prevented
it from fulfilling this request.
exception
com.microsoft.sqlserver.jdbc.SQLServerException: AutoCommit 模式设置为“true”时,无法调用回滚操作。
com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:171)
com.microsoft.sqlserver.jdbc.SQLServerConnection.rollback(SQLServerConnection.java:1643)
com.xmg.dang.intercerptor.TranscationInterceptor.intercept(TranscationInterceptor.java:20)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
note The full stack trace of the root cause is available in the
Apache Tomcat/7.0.53 logs.
下面都使用conn来操作,不要使用db.getConnection()试试 参考技术A 你确定每次getConnection是同一个连接来的。 参考技术B 可能表引擎是MyISAM
使用jupyter notebook 时明明已经安装了某个lib,还是出现ModuleNotFoundError
这是因为jupyter notebook要选择不同conda环境,但是运行jupyter 的时候,没有使用到这个环境,即使你已经conda activate这个环境,再执行jupyter。
解决方法就是将conda环境写入jupyter notebook的kernel中
在jupyter notebook中不同环境之间是通过切换kernel实现的。在conda环境下创建kernel文件,命令是conda install -n 环境名称 ipykernel。先进入conda的某个环境中,然后执行以下命令。
python -m ipykernel install --user --name 环境名称 --display-name "你希望看见的环境名"
–user --name --displa-name都是参数不同替换。
打开jupyter notebook,更换kernel就可以了。就在jupyter notebook界面上方的kernel---->change kernel中选择即可。
以上是关于明明已经设置了setAutoCommit(false);为啥还是报错AutoCommit 模式设置为"true"时,无法调用回滚操作.的主要内容,如果未能解决你的问题,请参考以下文章
AD20怎么铺铜?AD怎么铺铜?Altium designer怎么铺铜?AD明明已经铺铜怎么只有框?AD怎么铺不了铜皮?