diff --git a/classes/db/DbPDO.php b/classes/db/DbPDO.php index cc1709801..ed2870a16 100644 --- a/classes/db/DbPDO.php +++ b/classes/db/DbPDO.php @@ -209,13 +209,27 @@ class DbPDOCore extends Db if (strtolower($engine) == 'innodb') { + $value = 0; + $sql = 'SHOW VARIABLES WHERE Variable_name = \'have_innodb\''; $result = $link->query($sql); if (!$result) - return 4; + $value = 4; $row = $result->fetch(); if (!$row || strtolower($row['Value']) != 'yes') - return 4; + $value = 4; + + /* MySQL >= 5.6 */ + $sql = 'SHOW ENGINES'; + $result = $link->query($sql); + while ($row = $result->fetch()) + if ($row['Engine'] == 'InnoDB') + { + if (in_array($row['Support'], array('DEFAULT', 'YES'))) + $value = 0; + break; + } + return $value; } unset($link); return 0; diff --git a/classes/db/MySQL.php b/classes/db/MySQL.php index b8db3dbd6..ba05fd29c 100644 --- a/classes/db/MySQL.php +++ b/classes/db/MySQL.php @@ -168,13 +168,27 @@ class MySQLCore extends Db if (strtolower($engine) == 'innodb') { + $value = 0; + $sql = 'SHOW VARIABLES WHERE Variable_name = \'have_innodb\''; $result = mysql_query($sql); if (!$result) - return 4; + $value = 4; $row = mysql_fetch_assoc($result); if (!$row || strtolower($row['Value']) != 'yes') - return 4; + $value = 4; + + /* MySQL >= 5.6 */ + $sql = 'SHOW ENGINES'; + $result = mysql_query($sql); + while ($row = mysql_fetch_assoc($result)) + if ($row['Engine'] == 'InnoDB') + { + if (in_array($row['Support'], array('DEFAULT', 'YES'))) + $value = 0; + break; + } + return $value; } @mysql_close($link); return 0;