Предупреждение: соединение будет закрыто, но активная транзакция - PullRequest
0 голосов
/ 18 мая 2018

Код моего контроллера структурирован следующим образом:

$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() закроют транзакцию.Я не прав?

1 Ответ

0 голосов
/ 18 мая 2018

ОК, поэтому я пытаюсь найти причину этой проблемы уже 2 или 3 месяца, и сразу после того, как я задал этот вопрос, я нашел его! Это волшебство Stackoverflow, все.

Мое исключение никогда не было поймано, потому что я пропустил \ в директиве catch.Так как мой код живет в контроллере, PHP предполагал, что он только перехватывает App\Controller\Exception (пространство имен контроллера по умолчанию).Чтобы перехватить все исключения, код должен быть

catch (\Exception $e) {

Easy.

...