Bug #80871 [Opn]: PDO::inTransactional() always return false (Yii2)

From: Date: Tue, 16 Mar 2021 08:46:55 +0000
Subject: Bug #80871 [Opn]: PDO::inTransactional() always return false (Yii2)
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-232764@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=80871&edit=1

 ID:                 80871
 Updated by:         nikic@php.net
 Reported by:        sevak754 at gmail dot com
 Summary:            PDO::inTransactional() always return false (Yii2)
 Status:             Open
 Type:               Bug
 Package:            PDO related
 Operating System:   Linux
 PHP Version:        8.0.3
 Block user comment: N
 Private report:     N

 New Comment:

When you say you use MSSQL, does that mean you use the PDO DBLIB driver?


Previous Comments:
------------------------------------------------------------------------
[2021-03-16 08:39:41] sevak754 at gmail dot com

Description:
------------
I've tried to begin transaction with Yii2, but it didn't commit. It happened because here
yiisoft/yii2/db/Transaction.php:168 is PDO::inTransactional() check and he always return false. This
problem appeared after update to php 8.
I use MSSQL and I think there is a problem with driver.

Test script:
---------------
if ($this->_level === 0) {
            Yii::debug('Commit transaction', __METHOD__);
            // make sure the transaction wasn't autocommitted
            if ($this->db->pdo->inTransaction()) { // always false
                $this->db->pdo->commit();
            }
            $this->db->trigger(Connection::EVENT_COMMIT_TRANSACTION);
            return;
        }


Expected result:
----------------
Transaction has been commited

Actual result:
--------------
Transaction has been rollbacked


------------------------------------------------------------------------



--
Edit this bug report at https://bugs.php.net/bug.php?id=80871&edit=1


Thread (6 messages)

« previous php.bugs (#232764) next »