【mysql-php使用其他类中方法时事务无效,什么原因会导致这样的问题?】教程文章相关的互联网学习教程文章

在不用事务的情况下,如何保证插入数据库时不失败,三张表。

三张表要么全成功,要么全失败。回复内容:三张表要么全成功,要么全失败。那你就把插入完后的状态记录下来, 如果发现有某一条插入失败的话,再去手动删除另外两条。不可能啊~ 这就是事务发挥作用的场景,确保all or nothing事务的设计就是用来解决这个问题的,为何偏要不用呢,无法理解

innodb自增健如果事务回滚导致的id不连续有什么办法解决吗

描述你的问题如题 贴上相关代码 贴上报错信息 贴上相关截图 已经尝试过哪些方法仍然没解决(附上相关链接) 回复内容: 描述你的问题如题 贴上相关代码 贴上报错信息 贴上相关截图 已经尝试过哪些方法仍然没解决(附上相关链接) 自增id如果也事务化会很容易导致阻塞 因此是设计使然 如果业务原因非要连续 可以不采用自增而是插入时通过count等手动赋idid为什么要连续,唯一性才是王道明确告诉你,没有办法.mysql的primary key是在内...

php事务控制问题

php事务控制一定需要这样控制的吗? if($sql1&& $sql2 && $sql3){ $tranDb->commit(); } 这样sql多了,if的条件会很多$sql1&&$sql2,不同的函数之间如何控制事务?回复内容:php事务控制一定需要这样控制的吗? if($sql1&& $sql2 && $sql3){ $tranDb->commit(); } 这样sql多了,if的条件会很多$sql1&&$sql2,不同的函数之间如何控制事务?应该通过捕获异常的方式提交事务或事务回滚。if (!$sql1){$db->rollback();}if (!$sql2){$db...

mysql-php中预处理与事务同时使用

sql1,sql2两条语句分别插入到不同的表中,sql2某一个属性就是sql1插入后自增长的ID值。 我希望使用预处理来处理sql1和sql2, 同时希望他们执行的时候是在一个事务中, 现在问题就是, 事务中没提交的操作并没有真的插入到数据库中, 所以自增长的ID不存在,sql2插入出错, 肿麽办? 我现在处理方法就是不启动事务, 预处理sql1, 然后max出结果ID, 在预处理sql2, 一旦sql2出现异常, 根据ID删掉记录。 感觉有点麻烦。 其实我主要...

请问yii2的事务具体是怎么执行的,为什么我sql出错后不会回滚呢?

按照,http://www.digpage.com/active_record.html, 我设置了 关联表的 添加和删除操作的事务.afterSave,beforeDelete 正常情况下,关联操作没有问题. A,B 2表 数据都是符合预期的. 我在 数据库中 叫B表 表名修改. 这个时候sql语句肯定是执行不了的. yii直接报错(这也是对的,因为找不到相关的表.) 报错后再查看数据库, A表记录已经删除, 但B表记录任然存在. 我的疑问是, B表的记录存在是对的.因为sql没有执行成功. 但A表的记录为...

php更新多行数据要不要使用事务呢?

网站一般有一次编辑多行数据(比如多篇文章)这样的功能,在执行这样的操作时,要不要使用事务呢?回复内容:网站一般有一次编辑多行数据(比如多篇文章)这样的功能,在执行这样的操作时,要不要使用事务呢?需要进行多个相关联的操作时,需要用到事务。比如你买东西,一个操作是金额减少,一个操作是东西增加了,这时要使用事务,要么都成功,要么都失败。(一定要使用事务的情况)你的例子,编辑多篇文章,就看文章之间有没有关...

CI框架事务的使用问题

情况是这样: 我需要先往Post 表中插入文章的基本信息,成功后返回 post_id。然后需要做一些数据处理,再用 post_id 和对应的数据插入到 Postmeta 表。 但时候在数据处理的过程中,有时候会失败。导致 Post 的数据插入成功了,Postmeta 表的数据插入失败。 这就是一次失败的插入。会产生很多冗余的 Post 数据。 我希望的是 postmeta 数据插入失败,前面的 post 数据也应该『抹除』,就像事务的回退。 事务是在 CI 的 model 中运行,...

laravel事务

DB::transaction(function () {DB::table('users')->update(['votes' => 1]);DB::table('posts')->delete(); });如何传递参数到匿名函数内呢,如果我这样写,报错 DB::transaction(function ($a, $b, $c) {DB::table('users')->update(['votes' => 1]);DB::table('posts')->delete(); });回复内容:DB::transaction(function () {DB::table('users')->update(['votes' => 1]);DB::table('posts')->delete(); });如何传递参数到匿名...

PHP框架是如何处理MySQL事务多次开启和事务操作嵌套的?求框架源码

一般的PHP框架是如何处理MySQL事务多次开启和事务操作嵌套的?求框架源码回复内容:一般的PHP框架是如何处理MySQL事务多次开启和事务操作嵌套的?求框架源码哈哈,最近刚把这个功能提交到ThinkPHP主线上,原理是记录事务的嵌套数量,只在最外层提交事务。你可以参考参考: public function startTrans() {$this->initConnect(true);if (!$this->_linkID) {return false;}//数据rollback 支持if (0 == $this->transTimes) {// 记录当前...

php+mysql怎么实现事务回滚,表是MyISAM类型的?

MyISAM不支持事务,但如果遇到数据库错误,怎么实现回滚?例如:一段程序要先插入a表,然后再插入b表。 逻辑如下行不行: aResut=doInsertA if(aResut){bResult=doInsertBif (!bResult){delete aResult from a} }回复内容:MyISAM不支持事务,但如果遇到数据库错误,怎么实现回滚?例如:一段程序要先插入a表,然后再插入b表。 逻辑如下行不行: aResut=doInsertA if(aResut){bResult=doInsertBif (!bResult){delete aResult from a...

大家帮我看看数据库的事务如何优化?【图】

好多ORM可以捕获异常,然后回滚这样就非常的方便,但其实我觉得还没有解决根本问题,每一条sql,orm操作不还得自己判断是否成功吗,并且ORM也不规范,有时执行失败抛错,有时又返回false,真是搞不懂,每一步都要自己判断回滚,真是崩溃了,每一步操作都要判断结果,回滚,真是崩溃了,真是崩溃了,真是崩溃了,真是崩溃了,真是崩溃了,真是崩溃了!回复内容: 好多ORM可以捕获异常,然后回滚这样就非常的方便,但其实我觉得还没有...

php中预处理与事务同时使用

php预处理事务数据库 sql1,sql2两条语句分别插入到不同的表中,sql2某一个属性就是sql1插入后自增长的ID值,我希望使用预处理来处理sql1和sql2, 同时希望他们执行的时候是在一个事务中, 现在问题就是, 事务中没提交的操作并没有真的插入到数据库中, 所以自增长的ID不存在,sql2插入出错, 肿麽办?

php-调用多个接口进行数据库的更改-事务处理

php事务数据库 我做的是PHP上层接口的封装。别人底层接口做的是单一的增删改。我需要调用多个不同服务器上的接口来处理我需要的数据。进行更新到相应的接口里面。但是如果有的数据更改不成功了。需要事务的回滚。现在我知道的是同一个数据库里面的话,操作数据库的事务是可以实现的。但是不同的服务器不同的数据库,我需要事务处理的话。需要怎么做。我百度了分布式事务。但是没看懂。百度说的是JAVA的。我...

求助:php获取事务是否成功问题

php事务 ezql php新手事务怎么捕捉操作数据库出错多条语句操作数据库 全部成功执行才提交事务 否则回滚比如 insert 一句成功执行update 语句执行无错,但更新影响到的记录为0,此时是不要回滚的如下,$uname 值与数据库中 uname 值相同$res 就返回0 事务失败$db->query("BEGIN");$sql="update member set uname=$uname where id=$id";$res=$db->query($sql); if($res){ $db->query("COMMIT"); er...

MySQL事务数据库(InnoDB类型)的安装方法_PHP

InnoDBmysql安装 MySQL数据库分二种类型,一种是传统的数据表格式,一种是支持事务处理的数据表格式(InnoDB,BDB,其中以InnoDB为主),下面我介绍一下关于MySQL事务处理数据库的安装及使用方法 你先要去下载一下Mysql max版的安装程序,下载地址:www.mysql.com 按常规的方法进行安装 安装完成后,启动mysql\bin\WinMySQLadmin 再退出 运行 mysql\bin\mydqld-nt --remove mysql\bin\mysqld-max-nt --install 以上二行是去掉不支持事务...