aboutsummaryrefslogtreecommitdiffstats
path: root/lib/private/Setup/MySQL.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/private/Setup/MySQL.php')
-rw-r--r--lib/private/Setup/MySQL.php30
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;
- }
}