草庐IT

Deployment回滚

全部标签

php - 对于 PHP 和 MySQL,您应该检查回滚失败吗?

我正在使用PHP的mysqli库。数据库插入和更新总是在一个try-catchblock中。立即检查每个查询是否成功(if$result===false),任何失败都会引发异常。catch调用mysqli_rollback()并退出并为用户提供一条消息。我的问题是,我应该检查mysqli_rollback()的返回值吗?如果是这样,并且回滚失败,代码应该采取什么行动?我很难理解回滚是如何失败的(除非MySQL中有一些严重的错误)。而且由于PHP无论如何都会退出,调用回滚几乎是多余的。我当然认为它应该在代码中清楚起见,但是当PHP退出时,它会关闭与MySQL的连接,并且未提交的事务会自动

php - 对于 PHP 和 MySQL,您应该检查回滚失败吗?

我正在使用PHP的mysqli库。数据库插入和更新总是在一个try-catchblock中。立即检查每个查询是否成功(if$result===false),任何失败都会引发异常。catch调用mysqli_rollback()并退出并为用户提供一条消息。我的问题是,我应该检查mysqli_rollback()的返回值吗?如果是这样,并且回滚失败,代码应该采取什么行动?我很难理解回滚是如何失败的(除非MySQL中有一些严重的错误)。而且由于PHP无论如何都会退出,调用回滚几乎是多余的。我当然认为它应该在代码中清楚起见,但是当PHP退出时,它会关闭与MySQL的连接,并且未提交的事务会自动

mysql - 回滚在 MySQL 中不起作用

我有一个用户表,我有5条记录。我删除了两条记录,然后执行回滚命令,执行成功。但是那删除的两条记录没有恢复。用户表引擎是InnoDB. 最佳答案 您应该能够回滚您的事务,因为表引擎是InnoDB。无论如何,这是进行交易的正确方式,SETautocommit=0;STARTTRANSACTION;YourQueryhere.ROLLBACK;并确保您在需要回滚的查询之后没有使用COMMIT。引用TableEngines和Transaction.并且当创建数据库连接时,它默认处于自动提交模式。这意味着每个单独的SQL语句都被视为一个事务,

mysql - 回滚在 MySQL 中不起作用

我有一个用户表,我有5条记录。我删除了两条记录,然后执行回滚命令,执行成功。但是那删除的两条记录没有恢复。用户表引擎是InnoDB. 最佳答案 您应该能够回滚您的事务,因为表引擎是InnoDB。无论如何,这是进行交易的正确方式,SETautocommit=0;STARTTRANSACTION;YourQueryhere.ROLLBACK;并确保您在需要回滚的查询之后没有使用COMMIT。引用TableEngines和Transaction.并且当创建数据库连接时,它默认处于自动提交模式。这意味着每个单独的SQL语句都被视为一个事务,

mysql - 无法在 Zend Framework 中回滚事务

我在ZendFramework中使用以下代码进行事务处理,但回滚功能不起作用(数据通过insertSome($data)插入到数据库中)。怎么了?$db->beginTransaction();try{$model->insertSome($data);$model->insertAll($data2);//thislinecannotberunandthewholetransactionshouldberolledback.$db->commit();}catch(Exception$e){$db->rollBack();echo$e->getMessage();}

mysql - 无法在 Zend Framework 中回滚事务

我在ZendFramework中使用以下代码进行事务处理,但回滚功能不起作用(数据通过insertSome($data)插入到数据库中)。怎么了?$db->beginTransaction();try{$model->insertSome($data);$model->insertAll($data2);//thislinecannotberunandthewholetransactionshouldberolledback.$db->commit();}catch(Exception$e){$db->rollBack();echo$e->getMessage();}

git代码回滚是使用reset还是revert

时光不能回退,Git却允许我们改变历史。想要让Git回退历史,有以下步骤:使用gitlog命令,查看分支提交历史,确认需要回退的版本使用gitreset--hardcommit_id命令,进行版本回退使用gitpushorigin命令,推送至远程分支快捷命令:回退上个版本:gitreset--hardHEAD^【注:HEAD是指向当前版本的指针,HEAD^表示上个版本,HEAD^^表示上上个版本】如果修改到的文件比较少,我们可以不通过命令回滚的方式,手动删除之前的修改,再进行提交。reset与revert区别reset和revert都可以用来回滚代码。但他们是有区别的,准确来说,reset是用

mysql - 如果未达到 COMMIT TRANSACTION 则自动回滚

考虑以下几点:STARTTRANSACTION;BEGIN;INSERTINTOprp_property1(module_name,environment_name,NAME,VALUE)VALUES('','production','','300000');/**AssumethereissyntaxerrorSQLhere...**/BlahblahblahDELETEFROMprp_property1WHEREenvironment_name='production';COMMITTRANSACTION;问题:我注意到事务自动回滚,记录插入尝试失败。如果我不提供错误处理程序或错误

mysql - 如果未达到 COMMIT TRANSACTION 则自动回滚

考虑以下几点:STARTTRANSACTION;BEGIN;INSERTINTOprp_property1(module_name,environment_name,NAME,VALUE)VALUES('','production','','300000');/**AssumethereissyntaxerrorSQLhere...**/BlahblahblahDELETEFROMprp_property1WHEREenvironment_name='production';COMMITTRANSACTION;问题:我注意到事务自动回滚,记录插入尝试失败。如果我不提供错误处理程序或错误

mysql - 为什么 Rails 忽略(伪)嵌套事务中的回滚?

根据文档ActiveRecord::Transactions::ClassMethods,非新嵌套事务将忽略回滚。来自文档:User.transactiondoUser.create(username:'Kotori')User.transactiondoUser.create(username:'Nemu')raiseActiveRecord::RollbackendendraiseActiveRecord::Rollback被忽略,因为它在子事务中(或者更确切地说,它仍在父事务中,而不是它自己的)。我不明白为什么两者都会忽略回滚调用?我可以看到,由于子“事务”不是真正的事务,它不会