summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormarcelto <marcel.ouellette@gmail.com>2017-09-06 23:34:49 -0400
committerDamien Regad <dregad@mantisbt.org>2017-11-25 18:10:15 +0100
commitb741929818359e17b0b1725f6dfab1d97bccbdda (patch)
tree6726480cee2d499b31a21a98d4cb16eeffe2e56d
parent7860e95ade59e5b83727def93dc7048f1c99e018 (diff)
downloadadodb-b741929818359e17b0b1725f6dfab1d97bccbdda.tar.gz
adodb-b741929818359e17b0b1725f6dfab1d97bccbdda.tar.bz2
adodb-b741929818359e17b0b1725f6dfab1d97bccbdda.zip
PDO sqlsrv fix auto-commit error
Add SetAutoCommit() method for PDO drivers. Avoids PDO Error: The auto-commit mode cannot be changed for this driver Fixes #347
-rw-r--r--drivers/adodb-pdo.inc.php17
-rw-r--r--drivers/adodb-pdo_mysql.inc.php9
-rw-r--r--drivers/adodb-pdo_oci.inc.php9
3 files changed, 32 insertions, 3 deletions
diff --git a/drivers/adodb-pdo.inc.php b/drivers/adodb-pdo.inc.php
index b7b5577f..41d5b98f 100644
--- a/drivers/adodb-pdo.inc.php
+++ b/drivers/adodb-pdo.inc.php
@@ -335,6 +335,17 @@ class ADODB_pdo extends ADOConnection {
return $err;
}
+ /**
+ * @param bool $auto_commit
+ * @return void
+ */
+ function SetAutoCommit($auto_commit)
+ {
+ if(method_exists($this->_driver, 'SetAutoCommit')) {
+ $this->_driver->SetAutoCommit($auto_commit);
+ }
+ }
+
function SetTransactionMode($transaction_mode)
{
if(method_exists($this->_driver, 'SetTransactionMode')) {
@@ -358,7 +369,7 @@ class ADODB_pdo extends ADOConnection {
}
$this->transCnt += 1;
$this->_autocommit = false;
- $this->_connectionID->setAttribute(PDO::ATTR_AUTOCOMMIT,false);
+ $this->SetAutoCommit(false);
return $this->_connectionID->beginTransaction();
}
@@ -384,7 +395,7 @@ class ADODB_pdo extends ADOConnection {
$this->_autocommit = true;
$ret = $this->_connectionID->commit();
- $this->_connectionID->setAttribute(PDO::ATTR_AUTOCOMMIT,true);
+ $this->SetAutoCommit(true);
return $ret;
}
@@ -406,7 +417,7 @@ class ADODB_pdo extends ADOConnection {
$this->_autocommit = true;
$ret = $this->_connectionID->rollback();
- $this->_connectionID->setAttribute(PDO::ATTR_AUTOCOMMIT,true);
+ $this->SetAutoCommit(true);
return $ret;
}
diff --git a/drivers/adodb-pdo_mysql.inc.php b/drivers/adodb-pdo_mysql.inc.php
index 36d97b6e..becfad9e 100644
--- a/drivers/adodb-pdo_mysql.inc.php
+++ b/drivers/adodb-pdo_mysql.inc.php
@@ -85,6 +85,15 @@ class ADODB_pdo_mysql extends ADODB_pdo {
return $ret;
}
+ /**
+ * @param bool $auto_commit
+ * @return void
+ */
+ function SetAutoCommit($auto_commit)
+ {
+ $this->_connectionID->setAttribute(PDO::ATTR_AUTOCOMMIT, $auto_commit);
+ }
+
function SetTransactionMode($transaction_mode)
{
$this->_transmode = $transaction_mode;
diff --git a/drivers/adodb-pdo_oci.inc.php b/drivers/adodb-pdo_oci.inc.php
index 0bca35e3..5bd462e3 100644
--- a/drivers/adodb-pdo_oci.inc.php
+++ b/drivers/adodb-pdo_oci.inc.php
@@ -90,4 +90,13 @@ class ADODB_pdo_oci extends ADODB_pdo_base {
else
return $retarr;
}
+
+ /**
+ * @param bool $auto_commit
+ * @return void
+ */
+ function SetAutoCommit($auto_commit)
+ {
+ $this->_connectionID->setAttribute(PDO::ATTR_AUTOCOMMIT, $auto_commit);
+ }
}