mirror of
https://github.com/e107inc/e107.git
synced 2025-07-30 19:30:25 +02:00
Convert and run e107 using the MySQL/MariaDB utf8mb4 character set and
InnoDB storage engine Components affected: * `db_verify` now checks and corrects the table storage engine * `db_verify` now checks and corrects the table default character set * Note: Field character sets can still be overridden * Note: When correcting, the entire table is converted to the target charset. * The alt_auth plugin now connects via PDO using the e107 default charset, utf8mb4 * `e_db_pdo` now sets the charset to utf8mb4. This is currently not customizable because it was previously not customizable. * `install.php` now generates an `e107_config.php` file with `$mySQLcharset = 'utf8mb4';`, though this option is not actually used. * `install.php` now removes plugin tables before installing plugins. * `e_db_mysql` now only accepts the `utf8mb4` charset. Previously, it only accepted the `utf8` charset. * `e_db_mysql` now configures `mysqli_real_escape_string` to match the new default charset, `utf8mb4`. * Plugin installations now use the preferred MySQL table storage engines and charsets. The preferred MySQL table storage engines are now mapped like so: * If `ENGINE=MyISAM` is specified, the actual storage engine set will be the first available of: InnoDB, Aria, Maria, MyISAM * If `ENGINE=Aria` is specified, the actual storage engine set will be the first available of: Aria, Maria, MyISAM * If `ENGINE=InnoDB` is specified, the actual storage engine set will be the first available of: InnoDB, XtraDB * If `ENGINE=XtraDB` is specified, the actual storage engine set will be the first available of: XtraDB, InnoDB The preferred MySQL character set is now aliased like so: * `utf8` => `utf8mb4` * `utf8mb3` => `utf8mb3` * `utf8mb4` => `utf8mb4` Fixes: #4501
This commit is contained in:
17
install.php
17
install.php
@@ -833,13 +833,13 @@ class e_install
|
||||
if($this->previous_steps['mysql']['createdb'] == 1)
|
||||
{
|
||||
$notification = "<br /><span class='glyphicon glyphicon-ok'></span> ".LANINS_044;
|
||||
$query = 'CREATE DATABASE `'.$this->previous_steps['mysql']['db'].'` CHARACTER SET `utf8` ';
|
||||
$query = 'CREATE DATABASE `'.$this->previous_steps['mysql']['db'].'` CHARACTER SET `utf8mb4` ';
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
$notification = "<br /><span class='glyphicon glyphicon-ok'></span> ".LANINS_137;
|
||||
$query = 'ALTER DATABASE `'.$this->previous_steps['mysql']['db'].'` CHARACTER SET `utf8` ';
|
||||
$query = 'ALTER DATABASE `'.$this->previous_steps['mysql']['db'].'` CHARACTER SET `utf8mb4` ';
|
||||
}
|
||||
|
||||
if (!$this->dbqry($query))
|
||||
@@ -854,7 +854,7 @@ class e_install
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->dbqry('SET NAMES `utf8`');
|
||||
$this->dbqry('SET NAMES `utf8mb4`');
|
||||
|
||||
$page_content .= $notification; // "
|
||||
}
|
||||
@@ -1496,7 +1496,7 @@ class e_install
|
||||
\$mySQLpassword = '{$this->previous_steps['mysql']['password']}';
|
||||
\$mySQLdefaultdb = '{$this->previous_steps['mysql']['db']}';
|
||||
\$mySQLprefix = '{$this->previous_steps['mysql']['prefix']}';
|
||||
\$mySQLcharset = 'utf8';
|
||||
\$mySQLcharset = 'utf8mb4';
|
||||
|
||||
\$ADMIN_DIRECTORY = '{$this->e107->e107_dirs['ADMIN_DIRECTORY']}';
|
||||
\$FILES_DIRECTORY = '{$this->e107->e107_dirs['FILES_DIRECTORY']}';
|
||||
@@ -1903,9 +1903,10 @@ if($this->pdo == true)
|
||||
*/
|
||||
public function install_plugin($plugpath)
|
||||
{
|
||||
e107::getPlugin()->install_plugin($plugpath);
|
||||
// e107::getPlugin()->install_plugin($row['plugin_id']);
|
||||
|
||||
$plugin_handler = e107::getPlugin();
|
||||
$plugin_handler->XmlTables('uninstall', ['plugin_path' => $plugpath], ['delete_tables' => true]);
|
||||
$plugin_handler->install($plugpath);
|
||||
|
||||
e107::getMessage()->reset(false, false, true);
|
||||
|
||||
return null;
|
||||
@@ -2165,7 +2166,7 @@ if($this->pdo == true)
|
||||
preg_match_all("/create(.*?)(?:myisam|innodb);/si", $sql_data, $result );
|
||||
|
||||
// Force UTF-8 again
|
||||
$this->dbqry('SET NAMES `utf8`');
|
||||
$this->dbqry('SET NAMES `utf8mb4`');
|
||||
|
||||
$srch = array("CREATE TABLE","(");
|
||||
$repl = array("DROP TABLE IF EXISTS","");
|
||||
|
Reference in New Issue
Block a user