我的交易回滚不起作用。 如何使用PDO(我有InnoDB 5.7.18)在php脚本中将autocommit设置为false(或0)?
这是我的代码:
global $bdd; //defined with PDO
try {
$bdd->beginTransaction();
/* my requests */
$bdd->commit();
} catch (Exception $e) {
$bdd->rollBack();
return $e->getMessage();
}
return true;
}
答案 0 :(得分:1)
我自己解决了我的问题:我的一些表在MyISAM中(而大多数都在InnoDB中 - >我使用旧的数据库系统......);所以回滚对这些表不起作用。一旦我将它们改成InnoDB,它就可以了。 感谢大家的帮助!
答案 1 :(得分:0)
尝试设置以下属性:
$bdd->setAttribute(PDO::ATTR_AUTOCOMMIT,0);
答案 2 :(得分:0)
一切都很好,必须是代码中的错误。没有足够的信息可以说更多。
答案 3 :(得分:0)
$db = new PDO('mysql:dbname=employee');
$db->setAttribute(PDO::ATTR_AUTOCOMMIT,0);
var_dump($db->query('SELECT @@autocommit')->fetchAll());