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


Posted in PHP onAugust 05, 2013

MYSQL的事务处理主要有两种方法。
1、用begin,rollback,commit来实现
begin 开始一个事务
rollback 事务回滚
commit 事务确认

2、直接用set来改变mysql的自动提交模式
MYSQL默认是自动提交的,也就是你提交一个QUERY,它就直接执行!我们可以通过
set autocommit=0 禁止自动提交
set autocommit=1 开启自动提交
来实现事务的处理。

当你用 set autocommit=0 的时候,你以后所有的SQL都将做为事务处理,直到你用commit确认或rollback结束。

注意当你结束这个事务的同时也开启了个新的事务!按第一种方法只将当前的作为一个事务!
个人推荐使用第一种方法!

MYSQL中只有INNODB和BDB类型的数据表才能支持事务处理!其他的类型是不支持的!
***:一般MYSQL数据库默认的引擎是MyISAM,这种引擎不支持事务!如果要让MYSQL支持事务,可以自己手动修改:

方法如下:
1.修改c:\appserv\mysql\my.ini文件,找到skip-InnoDB,在前面加上#,后保存文件。

2.在运行中输入:services.msc,重启mysql服务。

3.到phpmyadmin中,mysql->show engines;(或执行mysql->show variables like 'have_%'; ),查看InnoDB为YES,即表示数据库支持InnoDB了。
也就说明支持事务transaction了。

4.在创建表时,就可以为Storage Engine选择InnoDB引擎了。如果是以前创建的表,可以使用mysql->alter table table_name type=InnoDB;
或 mysql->alter table table_name engine=InnoDB;来改变数据表的引擎以支持事务。
/*方法一*/

/*************** transaction--1 ***************/
$conn = mysql_connect('localhost','root','root') or die ("数据连接错误!!!");
mysql_select_db('test',$conn);
mysql_query("set names 'GBK'"); //使用GBK中文编码;
//开始一个事务
mysql_query("BEGIN"); //或者mysql_query("START TRANSACTION");
$sql = "INSERT INTO `user` (`id`, `username`, `sex`) VALUES (NULL, 'test1', '0')";
$sql2 = "INSERT INTO `user` (`did`, `username`, `sex`) VALUES (NULL, 'test1', '0')";//这条我故意写错
$res = mysql_query($sql);
$res1 = mysql_query($sql2);  
if($res && $res1){
mysql_query("COMMIT");
echo '提交成功。';
}else{
mysql_query("ROLLBACK");
echo '数据回滚。';
}
mysql_query("END");

/*方法二*/
/**************** transaction--2 *******************/
mysql_query("SET AUTOCOMMIT=0"); //设置mysql不自动提交,需自行用commit语句提交
$sql = "INSERT INTO `user` (`id`, `username`, `sex`) VALUES (NULL, 'test1', '0')";
$sql2 = "INSERT INTO `user` (`did`, `username`, `sex`) VALUES (NULL, 'test1', '0')";//这条我故意写错
$res = mysql_query($sql);
$res1 = mysql_query($sql2);  
if($res && $res1){
mysql_query("COMMIT");
echo '提交成功。';
}else{
mysql_query("ROLLBACK");
echo '数据回滚。';
}
mysql_query("END"); //事务处理完时别忘记mysql_query("SET AUTOCOMMIT=1");自动提交
PHP 相关文章推荐
PHP中,文件上传
Dec 06 PHP
dedecms 制作模板中使用的全局标记图文教程
Mar 11 PHP
php中显示数组与对象的实现代码
Apr 18 PHP
php5.3 goto函数介绍和示例
Mar 21 PHP
php获取当前页面完整URL地址
Dec 30 PHP
php基于jquery的ajax技术传递json数据简单实例
Apr 15 PHP
值得分享的php+ajax实时聊天室
Jul 20 PHP
详解Yii实现分页的两种方法
Jan 14 PHP
PHP基于DOMDocument解析和生成xml的方法分析
Jul 17 PHP
PHP双向链表定义与用法示例
Jan 31 PHP
PHP大文件切割上传功能实例分析
Jul 01 PHP
使用swoole 定时器变更超时未支付订单状态的解决方案
Jul 24 PHP
解析php mysql 事务处理回滚操作(附实例)
Aug 05 #PHP
php多层数组与对象的转换实例代码
Aug 05 #PHP
注意:php5.4删除了session_unregister函数
Aug 05 #PHP
PHP中fwrite与file_put_contents性能测试代码
Aug 02 #PHP
PHP-Fcgi下PHP的执行时间设置方法
Aug 02 #PHP
基于php中使用excel的简单介绍
Aug 02 #PHP
PHP自动识别字符集并完成转码详解
Aug 02 #PHP
You might like
理解PHP中的stdClass类
2014/04/18 PHP
PHP base64编码后解码乱码的解决办法
2014/06/19 PHP
深入探究PHP的多进程编程方法
2015/08/18 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
2016/02/14 PHP
同一个表单 根据要求递交到不同页面的实现方法小结
2009/08/05 Javascript
jQuery 打造动态渐变按钮 详细图文教程
2010/04/25 Javascript
没有document.getElementByName方法
2013/08/19 Javascript
JavaScript的21条基本知识点
2014/03/04 Javascript
使用GruntJS构建Web程序之安装篇
2014/06/04 Javascript
DOM基础教程之使用DOM + Css
2015/01/20 Javascript
JavaScript运动减速效果实例分析
2015/08/04 Javascript
jQuery实现横向带缓冲的水平运动效果(附demo源码下载)
2016/01/29 Javascript
JS实现两周内自动登录功能
2017/03/23 Javascript
JS判断两个对象内容是否相等的方法示例
2017/04/10 Javascript
微信小程序开发之选项卡(窗口底部TabBar)页面切换
2017/04/12 Javascript
require.js与bootstrap结合实现简单的页面登录和页面跳转功能
2017/05/12 Javascript
详解AngularJS1.x学习directive 中‘& ’‘=’ ‘@’符号的区别使用
2017/08/23 Javascript
基于jQuery实现Ajax验证用户名是否可用实例
2018/03/25 jQuery
关于vue的npm run dev和npm run build的区别介绍
2019/01/14 Javascript
微信小程序下拉框搜索功能的实现方法
2019/07/31 Javascript
Python 爬虫之超链接 url中含有中文出错及解决办法
2017/08/03 Python
Python学习之Anaconda的使用与配置方法
2018/01/04 Python
解决Python的str强转int时遇到的问题
2018/04/09 Python
Django ManyToManyField 跨越中间表查询的方法
2018/12/18 Python
如何在python中处理配置文件代码实例
2020/09/27 Python
python解包概念及实例
2021/02/17 Python
印度化妆品购物网站:Nykaa
2018/07/22 全球购物
新领导上任欢迎词
2014/01/13 职场文书
个人工作表现评语
2014/04/30 职场文书
开工典礼策划方案
2014/05/23 职场文书
五四演讲稿范文
2014/09/03 职场文书
个人职业及收入证明
2014/10/13 职场文书
2014年学校德育工作总结
2014/12/05 职场文书
党员民主生活会材料
2014/12/15 职场文书
2015年安康杯竞赛活动总结
2015/03/26 职场文书
国富论读书笔记
2015/06/26 职场文书