diff --git a/component/admin/sql/install/mysql/install.utf8mb4.sql b/component/admin/sql/install/mysql/install.utf8mb4.sql new file mode 100644 index 00000000..106eb6c6 --- /dev/null +++ b/component/admin/sql/install/mysql/install.utf8mb4.sql @@ -0,0 +1,22 @@ +CREATE TABLE IF NOT EXISTS `#__localise` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `asset_id` int(11) NOT NULL, + `path` varchar(400) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '', + `checked_out` int(10) unsigned NOT NULL DEFAULT '0', + `checked_out_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + PRIMARY KEY (`id`), + KEY `idx_path` (`path`(191)) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci; + +CREATE TABLE IF NOT EXISTS `#__localise_revised_values` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `client` varchar(255) NOT NULL, + `reftag` varchar(6) NOT NULL, + `tag` varchar(6) NOT NULL, + `filename` varchar(255) NOT NULL, + `revised` tinyint(1) NOT NULL DEFAULT 0, + `key` varchar(255) NOT NULL, + `target_text` mediumtext NOT NULL, + `source_text` mediumtext NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci; diff --git a/component/admin/sql/updates/mysql-utf8mb4/0.0.1.sql b/component/admin/sql/updates/mysql-utf8mb4/0.0.1.sql new file mode 100644 index 00000000..e69de29b diff --git a/component/admin/sql/updates/mysql/4.0.15.sql b/component/admin/sql/updates/mysql-utf8mb4/4.0.15-2016-03-16.sql similarity index 100% rename from component/admin/sql/updates/mysql/4.0.15.sql rename to component/admin/sql/updates/mysql-utf8mb4/4.0.15-2016-03-16.sql diff --git a/component/admin/sql/updates/mysql-utf8mb4/4.0.15-2016-03-20.sql b/component/admin/sql/updates/mysql-utf8mb4/4.0.15-2016-03-20.sql new file mode 100644 index 00000000..60119614 --- /dev/null +++ b/component/admin/sql/updates/mysql-utf8mb4/4.0.15-2016-03-20.sql @@ -0,0 +1,21 @@ +-- Step 1 of the UTF-8 Multibyte (utf8mb4) conversion for MySQL. +-- Drop indexes which will be added again in step 2. +ALTER TABLE `#__localise` DROP KEY `idx_path`; + +-- Step 2 of the UTF-8 Multibyte (utf8mb4) conversion for MySQL. +-- Step 2.1: Limit indexes so their max allowed lengths would not get exceeded with utf8mb4. +ALTER TABLE `#__localise` ADD KEY `idx_path` (`path`(191)); + +-- Step 2.2: Enlarge columns to avoid data loss on later conversion to utf8mb4. +ALTER TABLE `#__localise` MODIFY `path` varchar(400) NOT NULL DEFAULT ''; + +-- Step 2.3: Convert all tables to utf8mb4 chracter set with utf8mb4_unicode_ci collation. +ALTER TABLE `#__localise` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +ALTER TABLE `#__localise_revised_values` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- Step 2.4: Set collation to utf8mb4_bin for formerly utf8_bin collated columns. +ALTER TABLE `#__localise` MODIFY `path` varchar(400) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT ''; + +-- Step 2.5: Set default character set and collation for all tables. +ALTER TABLE `#__localise` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +ALTER TABLE `#__localise_revised_values` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; diff --git a/component/admin/sql/updates/mysql-utf8mb4/index.html b/component/admin/sql/updates/mysql-utf8mb4/index.html new file mode 100644 index 00000000..3af63015 --- /dev/null +++ b/component/admin/sql/updates/mysql-utf8mb4/index.html @@ -0,0 +1 @@ +