全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Mysql事务操作失败如何解决

Mysql事务操作失败如何解决

事务的原子性 :事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做 。

要实现事务的原子性,单单靠一条commit或是rollback命令还是不行的,因为例如commit命令它只是将一个事务中执行成功的DML语句提交给数据库里。如果要实现事务的原子性,则就需要commit和rollback命令配合上程序上的一个业务逻辑才能可以,具体业务逻辑代码如下示例代码:

1.现象

     程序中打开了事务进行插入,但是没有commit,表中的数据已经存在,就是回滚也不能删除插入的数据

2.原因

    本表的Storage Engine 为myisam,不是innoDB,不支持事务处理 rollback()

3.解决方法

    使用 alter table xxxx engine = innoDB ; 将表改为 InnoDB 引擎,结果回滚正常。

4.代码

 private void testCrud() {
     Connection conn = null;      //连接对象
     PreparedStatement pstmt = null;  //预编译的SQL语句对象
      try{
        //加载MySQL驱动程序
        Class.forName("com.mysql.jdbc.Driver");
        //连接字符串
        String url = "jdbc:mysql://localhost:3306/test";
        //建立数据库连接
        conn = DriverManager.getConnection(url,"root","");
        //设置事务的隔离级别
        // conn.setTransactionIsolation(Connection. TRANSACTION_REPEATABLE_READ);
        //设置自动提交为false,开始事务
        conn.setAutoCommit(false);
        //带参数的更新语句
        String sql = "INSERT INTO user_info (username ,password ,age )values(?,?,?)";
        //准备语句
        pstmt = conn.prepareStatement(sql);
        //绑定参数,执行更新语句,将张三的账户金额减去1000元
        pstmt.setString(1, "zhangui");
        pstmt.setString(2, "1111");
        pstmt.setInt(3, 300);
        pstmt.execute();
        
        //绑定参数,执行更新语句,将李四的账户金额增加1000元
        // pstmt.setString(1, "zzzzzzzzzzzzzzzzz"); //绑定了非法参数
        //pstmt.setString(2, "1111111111");
        //pstmt.setInt(3, 500);
        //pstmt.execute(); //将抛出SQL异常
        //提交事务
        //conn.commit();
        System.out.println("事务已提交,转账成功!");
        //关闭语句、连接
        pstmt.close(); conn.close();
      }catch(Exception e){
        try{
          conn.rollback();  //回滚事务
          System.out.println("事务回滚成功,没有任何记录被更新!");
        }catch(Exception re){
          System.out.println("回滚事务失败!");
        }
        e.printStackTrace();
      }finally{
        if(pstmt!=null) try{pstmt.close();}catch(Exception ignore){}
        if(conn!=null) try{conn.close();}catch(Exception ignore){}
      }
    
  }

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Mysql事务操作失败  # mysql  # 事务操作失败解决办法  # Mysql事务处理详解  # 通过实例分析MySQL中的四种事务隔离级别  # 解决Mysql收缩事务日志和日志文件过大无法收缩问题  # mysql的存储过程、游标 、事务实例详解  # PHP mysqli事务操作常用方法分析  # MySQL四种事务隔离级别详解  # NodeJs使用Mysql模块实现事务处理实例  # MySQL数据库事务隔离级别详解  # MySQL事务的基础学习以及心得分享  # 绑定  # 没有任何  # 希望能  # 不做  # 不支持  # 谢谢大家  # 定了  # 解决方法  # 都做  # 如何解决  # 抛出  # 设置自动  # 单靠  # 库里  # 事务处理  # 李四  # 加载  # 本表  # 打开了  # brush 


相关文章: 在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  如何获取上海专业网站定制建站电话?  全景视频制作网站有哪些,全景图怎么做成网页?  c# 在ASP.NET Core中管理和取消后台任务  制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?  制作企业网站建设方案,怎样建设一个公司网站?  网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?  建站之星后台管理:高效配置与模板优化提升用户体验  定制建站价位费用解析与套餐推荐全攻略  个人摄影网站制作流程,摄影爱好者都去什么网站?  网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?  如何通过wdcp面板快速创建网站?  上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  如何在建站宝盒中设置产品搜索功能?  建站之星后台管理如何实现高效配置?  建站之星安装路径如何正确选择及配置?  商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?  建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  陕西网站制作公司有哪些,陕西凌云电器有限公司官网?  已有域名如何免费搭建网站?  企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?  如何在新浪SAE免费搭建个人博客?  如何高效配置香港服务器实现快速建站?  Swift中循环语句中的转移语句 break 和 continue  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  建站之星官网登录失败?如何快速解决?  ,石家庄四十八中学官网?  如何通过虚拟主机空间快速建站?  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?  如何用狗爹虚拟主机快速搭建网站?  制作网站的公司有哪些,做一个公司网站要多少钱?  如何选择靠谱的建站公司加盟品牌?  ,网站推广常用方法?  电脑免费海报制作网站推荐,招聘海报哪个网站多?  网站建设制作、微信公众号,公明人民医院怎么在网上预约?  Android滚轮选择时间控件使用详解  如何快速搭建高效WAP手机网站?  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  TestNG的testng.xml配置文件怎么写  网站制作新手教程,新手建设一个网站需要注意些什么?  建站之星后台密码遗忘如何找回?  建站之星好吗?新手能否轻松上手建站?  nginx修改上传文件大小限制的方法  代刷网站制作软件,别人代刷火车票靠谱吗?  建站之星在线版空间:自助建站+智能模板一键生成方案  如何在腾讯云服务器快速搭建个人网站?  湖北网站制作公司有哪些,湖北清能集团官网? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。