-
-
Notifications
You must be signed in to change notification settings - Fork 214
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Migrate database charset to utf8mb4 and storage engine to InnoDB #4508
Conversation
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: e107inc#4501
01e1680
to
d793b7f
Compare
29d9ffd
to
78d9e4b
Compare
4f99536
to
1b08eb0
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Scheduled for e107 v2.4, which will include the minimum requirement of InnoDB due to the following issues:
e2553df
to
363fc99
Compare
9119ebf
to
2a0ee3f
Compare
Code Climate has analyzed commit d790faa and detected 0 issues on this pull request. The test coverage on the diff in this pull request is 43.1% (80% is the threshold). This pull request will bring the total coverage in the repository to 39.1% (-0.1% change). View more on Code Climate. |
Fixes: #4501
Motivation and Context
Add emoji support and stop using the obsolete MyISAM storage engine
Description
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 enginedb_verify
now checks and corrects the table default character setcharset.
charset, utf8mb4
e_db_pdo
now sets the charset to utf8mb4. This is currently notcustomizable because it was previously not customizable.
install.php
now generates ane107_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 theutf8mb4
charset. Previously, itonly accepted the
utf8
charset.e_db_mysql
now configuresmysqli_real_escape_string
to match thenew default charset,
utf8mb4
.and charsets.
The preferred MySQL table storage engines are now mapped like so:
ENGINE=MyISAM
is specified, the actual storage engine set will bethe first available of: InnoDB, Aria, Maria, MyISAM
ENGINE=Aria
is specified, the actual storage engine set will bethe first available of: Aria, Maria, MyISAM
ENGINE=InnoDB
is specified, the actual storage engine set will bethe first available of: InnoDB, XtraDB
ENGINE=XtraDB
is specified, the actual storage engine set will bethe first available of: XtraDB, InnoDB
The preferred MySQL character set is now aliased like so:
utf8
=>utf8mb4
utf8mb3
=>utf8mb3
utf8mb4
=>utf8mb4
How Has This Been Tested?
Unit tests included in pull request
Types of Changes
Checklist