Merge pull request #4256 from pocoproject/4247-mysql-startTransaction

Implement MySQL::SessionHandle::startTransaction as submitting the SQL statement 'BEGIN'
This commit is contained in:
Aleksandar Fabijanic 2023-11-10 12:52:06 +01:00 committed by GitHub
commit 940c9b48ff
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -153,14 +153,14 @@ void SessionHandle::close()
void SessionHandle::startTransaction() void SessionHandle::startTransaction()
{ {
int rc = mysql_autocommit(_pHandle, false); int rc = mysql_query(_pHandle, "BEGIN");
if (rc != 0) if (rc != 0)
{ {
// retry if connection lost // retry if connection lost
int err = mysql_errno(_pHandle); int err = mysql_errno(_pHandle);
if (err == 2006 /* CR_SERVER_GONE_ERROR */ || err == 2013 /* CR_SERVER_LOST */) if (err == 2006 /* CR_SERVER_GONE_ERROR */ || err == 2013 /* CR_SERVER_LOST */)
{ {
rc = mysql_autocommit(_pHandle, false); rc = mysql_query(_pHandle, "BEGIN");
} }
} }
if (rc != 0) throw TransactionException("Start transaction failed.", _pHandle); if (rc != 0) throw TransactionException("Start transaction failed.", _pHandle);