diff options
Diffstat (limited to 'lib/private/Setup/MySQL.php')
-rw-r--r-- | lib/private/Setup/MySQL.php | 30 |
1 files changed, 7 insertions, 23 deletions
diff --git a/lib/private/Setup/MySQL.php b/lib/private/Setup/MySQL.php index d72a106053f..3f3ad6d9589 100644 --- a/lib/private/Setup/MySQL.php +++ b/lib/private/Setup/MySQL.php @@ -27,7 +27,7 @@ */ namespace OC\Setup; -use OC\DB\ConnectionFactory; +use OC\DB\MySqlTools; use OCP\IDBConnection; class MySQL extends AbstractDatabase { @@ -38,9 +38,12 @@ class MySQL extends AbstractDatabase { $connection = $this->connect(['dbname' => null]); // detect mb4 - if (is_null($this->config->getSValue('mysql.utf8mb4', null)) && $this->supports4ByteCharset($connection)) { - $this->config->setValue('mysql.utf8mb4', true); - $connection = $this->connect(); + if (is_null($this->config->getValue('mysql.utf8mb4', null))) { + $tools = new MySqlTools(); + if ($tools->supports4ByteCharset($connection)) { + $this->config->setValue('mysql.utf8mb4', true); + $connection = $this->connect(); + } } $this->createSpecificUser($username, $connection); @@ -169,23 +172,4 @@ class MySQL extends AbstractDatabase { 'dbpassword' => $this->dbPassword, ]); } - - /** - * @param IDBConnection $connection - * @return bool - */ - private function supports4ByteCharset(IDBConnection $connection) { - foreach (['innodb_file_format' => 'Barracuda', 'innodb_large_prefix' => 'ON', 'innodb_file_per_table' => 'ON'] as $var => $val) { - $result = $connection->executeQuery("SHOW VARIABLES LIKE '$var'"); - $rows = $result->fetch(); - $result->closeCursor(); - if ($rows === false) { - return false; - } - if (strcasecmp($rows['Value'], $val) === 0) { - return false; - } - } - return true; - } } |