![](/img/trans.png)
[英]Transaction rollback in innodb mysql/php with mysql_query not working
[英]MySQL InnoDB transaction rollback is not working
我从Yii框架(使用PDO)发送到InnoDB MySql数据库的事务有问题,问题是:回滚不起作用,更新语句立即提交。
问题是MySql从Yii应用程序发送时马上就提交了,我不知道为什么。
出于某种原因,我只是尝试在my.cnf中启用log_bin,并且回滚有效!
有人可以解释一下发生了什么吗?
我正在使用MySql 5.6.25,PHP 5.6.10和Yii 1.1.14。
更新:
原来我犯了一个错误,我认为启用log_bin后回滚有效,但没有成功。
所以现在我回到了原始问题,回滚不起作用,这是源代码:
$transaction = Yii::app()->db->beginTransaction();
try {
$data = array();
// fill some data here..
$model = Model::createOrUpdate($data);
$errors = $model->getErrors();
} catch (Exception $e) {
$errors []= $e->getMessage();
}
if (empty($errors)) {
$msg = 'Success message!';
$transaction->commit();
echo CJSON::encode(array('success', $msg));
} else {
if ($transaction->active) {
$transaction->rollback();
}
echo CJSON::encode(array('error', implode(', ', $errors)));
}
Yii::app()->end();
经过一些调试,我找到了背后的原因。 基本上方法是:
Model::createOrUpdate($data);
正在内部调用存储过程,因此,如果有人遇到此问题,请检查是否已解决。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.