急!求助!mysql 回滚无效

问题描述

publicstaticbooleanUpdate(Stringdb,ArrayList<String>sql){Connectioncon=DbConnection.getConnection("db");;Statementpstmt=null;try{pstmt=con.createStatement();con.setAutoCommit(false);for(inti=0;i<sql.size();i++){System.out.println("sql:"+sql.get(i).toString());intr=pstmt.executeUpdate(sql.get(i));if(r<0){con.rollback();returnfalse;}}con.commit();}catch(SQLExceptionex){System.out.println("更新失败!"+ex.getMessage());try{System.out.println("回滚!");con.rollback();}catch(SQLExceptionex2){System.out.println("回滚失败!"+ex2.getMessage());returnfalse;}returnfalse;}finally{try{con.setAutoCommit(true);pstmt.close();con.close();}catch(SQLExceptionex1){ex1.printStackTrace();}}returntrue;}各位大哥,小弟用的mysql5.0,一共有4条语句,被放在一个集合里,最后一条语句有语法错误,调用这个方法的时候,执行到第四条的时候应该报错且回滚。但不知道为什么前3条都执行了,没有回滚????先谢谢各位了!

解决方案

解决方案二:
if(r<=0){
解决方案三:
程序是在catch里出错的,在catch里执行了con.rowBack(),但是数据并没有恢复,不知道为什么。

时间: 2024-11-15 22:50:51

急!求助!mysql 回滚无效的相关文章

实现MySQL回滚的Python脚本的编写教程_Mysql

操作数据库时候难免会因为"大意"而误操作,需要快速恢复的话通过备份来恢复是不太可能的,因为需要还原和binlog差来恢复,等不了,很费时.这里先说明下因为Delete 操作的恢复方法:主要还是通过binlog来进行恢复,前提是binlog_format必须是Row格式,否则只能通过备份来恢复数据了. 方法: 条件:开启Binlog,Format为Row. 步骤: 1.通过MySQL自带工具mysqlbinlog 指定导出操作的记录: mysqlbinlog --no-defaults

mysql 回滚-spring3+mybatis+myql事务不生效

问题描述 spring3+mybatis+myql事务不生效 代码格式为 @Transactional(rollbackFor=java.lang.Exception.class, propagation=Propagation.REQUIRED, readOnly=false) public void excuDevOrAppPagRel(DevPackageRln devPackageRln) throws Exception{ //具体操作,无try-catch操作 } mysql所有表的

【MySQL】 DB 回滚崩溃案例一则

背景 一个测试人员对性能数据库进行性能压测 ,由于存储过程写的有问题,对一个大表进行大量更新为及时提交 ,见proc hang 住就kill 掉进程,然后长时间等待未果直接重启mysql 服务.之后错误日志中报错: 130516 20:47:36  InnoDB: Error: page 5 log sequence number 151 2771374516 InnoDB: is in the future! Current system log sequence number 131 379

求助...Membership 里面如何事务回滚?

问题描述 例如我在同时创建用户和往另外一张表里增加的内容时候,如果创建用户成功了但往另外一张表里面增加内容时出错了,在这样的情况下,我就需要用到事务回滚.MembershipCreateStatusstatus;MembershipUsernewUser=Membership.CreateUser(tb_UserName.Text,tb_Pwd.Text,FinanceLogic.Common.Instance().StrFilter(tb_Email.Text),FinanceLogic.Co

MySql事务无法回滚的原因有哪些_Mysql

使用MySQL时,如果发现事务无法回滚,但Hibernate.Spring.JDBC等配置又没有明显问题时,不要苦恼,先看看MySQL创建的表有没有问题,即表的类型. InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定.基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持.MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能. MyIASM是I

mysql事务回滚数据回滚用法与问题

在当前事务中确实能看到插入的记录.最后只不过删除了.但是AUTO_INCREMENT不会应删除而改变值. 1.为什么auto_increament没有回滚? 因为innodb的auto_increament的计数器记录的当前值是保存在存内 存中的,并不是存在于磁盘上,当mysql server处于运行的时候,这个计数值只会随着insert改增长,不会随着delete而减少.而当mysql server启动时,当我们需要去查询auto_increment计数值时,mysql便会自动执行:SELEC

MySQL数据库误操作后快速回滚的方法_Mysql

基本上每个跟数据库打交道的程序员(当然也可能是你同事)都会碰一个问题,MySQL误操作后如何快速回滚?比如,delete一张表,忘加限制条件,整张表没了.假如这还是线上环境核心业务数据,那这事就闹大了.误操作后,能快速回滚数据是非常重要的. binlog2sql快速回滚 首先,确认你的MySQL server开启了binlog,设置了以下参数: [mysqld] server-id = 1 log_bin = /var/log/mysql/mysql-bin.log max_binlog_siz

解析php mysql 事务处理回滚操作(附实例)_php技巧

很多新手在进行项目过程中,会碰到这样一种情况,如:论坛扣币项目中,用户支付论坛币的时候如果突然断网.电脑死机.停电.等其它自然灾害时,导致本次交易没有成功(即用户的币已经扣掉了,但是服务器数据库中没有消费记录等其它情况),这种情况应该怎么样进行处理呢? 在这个时候,我们可以用Mysql事务回滚来进行处理,那代码怎么写呢? 那下面我就来说一说这个mysql事务回滚应该怎么处理. 首先MYSQL中只有INNODB和BDB类型的数据表才能支持事务处理!其他的类型是不支持的! 那如果,我们的数据表已经存

mysql事务回滚使用与常见问题介绍

方法如下: 1.修改c:appservmysqlmy.ini文件,找到skip-InnoDB,在前面加上#,后保存文件. 2.在运行中输入:services.msc,重启mysql服务. 3.到phpmyadmin中,mysql->show engines;(或执行mysql->show variables like 'have_%'; ),查看InnoDB为YES,即表示数据库支持InnoDB了. 也就说明支持事务transaction了. 4.在创建表时,就可以为Storage Engin