From c56b56f4aab758b5dc2a2bc1b2dc41b7cd93642d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tautvidas=20Sipavi=C4=8Dius?= Date: Tue, 30 May 2017 21:05:01 +0300 Subject: [PATCH] Apply charset and collation only if they are specified --- lib/Config/Database.php | 10 +++++++++- lib/Config/Env.php | 7 +++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/lib/Config/Database.php b/lib/Config/Database.php index aa77a7db1c..cee44d7339 100644 --- a/lib/Config/Database.php +++ b/lib/Config/Database.php @@ -32,8 +32,16 @@ class Database { $driver_options = array( 'TIME_ZONE = "' . Env::$db_timezone_offset . '"', 'sql_mode=(SELECT REPLACE(@@sql_mode,"ONLY_FULL_GROUP_BY",""))', - 'NAMES ' . Env::$db_charset . ' COLLATE ' . ENV::$db_collation, ); + + if(!empty(Env::$db_charset)) { + $character_set = 'NAMES ' . Env::$db_charset; + if(!empty(Env::$db_collation)) { + $character_set .= ' COLLATE ' . Env::$db_collation; + } + $driver_options[] = $character_set; + } + $current_options = ORM::for_table("") ->raw_query('SELECT @@session.wait_timeout as wait_timeout') ->findOne(); diff --git a/lib/Config/Env.php b/lib/Config/Env.php index a9b24cdba4..e7619ca087 100644 --- a/lib/Config/Env.php +++ b/lib/Config/Env.php @@ -67,11 +67,11 @@ class Env { self::$db_charset = $wpdb->charset; self::$db_collation = $wpdb->collate; self::$db_charset_collate = $wpdb->get_charset_collate(); - self::$db_source_name = self::dbSourceName(self::$db_host, self::$db_socket, self::$db_port); + self::$db_source_name = self::dbSourceName(self::$db_host, self::$db_socket, self::$db_port, self::$db_charset); self::$db_timezone_offset = self::getDbTimezoneOffset(); } - private static function dbSourceName($host, $socket, $port) { + private static function dbSourceName($host, $socket, $port, $charset) { $source_name = array( (!$socket) ? 'mysql:host=' : 'mysql:unix_socket=', $host, @@ -82,6 +82,9 @@ class Env { 'dbname=', DB_NAME ); + if(!empty($charset)) { + $source_name[] = ';charset=' . $charset; + } return implode('', $source_name); }