警告:连接将被关闭,但有一个活动事务

j2cgzkjk  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(501)

我的控制器代码的结构如下:

$connection = ConnectionManager::get('default');
$connection->begin();

try {
   //Some logic here to create entities, validate and save them
   //This code can throw exceptions

   $connection->commit();
}
catch (Exception $e) {
   $connection->rollback();
}

这是在cakephp中使用事务的正确方法吗?如果确实引发了异常,事务将正确回滚,但会出现警告: Warning: The connection is going to be closed but there is an active transaction. 我想,我错过了一个重要的地方,因为我不明白为什么发出这个警告。我也一直在想 commit() 或者 rollback() 将结束交易。我错了吗?

neekobn8

neekobn81#

好吧,我从两三个月前就开始试着找出这个问题的原因了,就在我问了这个问题之后,我找到了!各位,这就是魔法。
我的例外从未被发现,因为我错过了比赛 \catch 指令。因为我的代码存在于一个控制器中,所以php假设只捕获 App\Controller\Exception (默认控制器命名空间)。要捕获所有异常,代码必须 catch (\Exception $e) { 容易的。

相关问题