mysql 没有回滚

问题描述

DROP PROCEDURE IF EXISTS initYTData;CREATE PROCEDURE initYTData()BEGINSTART TRANSACTION;BEGIN INSERT INTO test values (1 , 'test1');INSERT INTO test values ('2sss','test2');INSERT INTO test values ('3','test2');COMMIT ;END;END;CALL initYTData;或者DROP PROCEDURE IF EXISTS initYTData;CREATE PROCEDURE initYTData()BEGINSTART TRANSACTION;INSERT INTO test values (1 , 'test1');INSERT INTO test values ('2sss','test2');INSERT INTO test values ('3','test2');COMMIT ;END;CALL initYTData;都没有回滚、插入了第一条数据

解决方案

查看下表的引擎是不是支持事务。InnoDB才支持事务,要是MyISAM就不支持了

时间: 2023-11-21 14:28:04

mysql 没有回滚的相关文章

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

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

解析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

浅析Mysql 数据回滚错误的解决方法_php技巧

MYSQL的事务处理主要有两种方法.1.用begin,rollback,commit来实现begin 开始一个事务rollback 事务回滚commit 事务确认 2.直接用set来改变mysql的自动提交模式MYSQL默认是自动提交的,也就是你提交一个QUERY,它就直接执行!我们可以通过set autocommit=0 禁止自动提交set autocommit=1 开启自动提交来实现事务的处理. 当你用 set autocommit=0 的时候,你以后所有的SQL都将做为事务处理,直到你用c

PHP mysql事务回滚操作实例

MYSQL中只有INNODB和BDB类型的数据表才能支持事务处理!其他的类型是不支持的!  代码如下 复制代码 public function insertUser ($userArray){   foreach ($userArray as $key => $value) {    @$field  .= "$key,";    @$content .= "'$value',";   }    $field  = ereg_replace(',$', '',

MYSQL事务回滚的2个问题分析_Mysql

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

【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

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

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

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所有表的