View source for Converting your MySQL database to UTF8

This document describes ((/Dev/Release/R6.0/Upgrade/DatabaseConversion how to convert your MySQL database from the latin1 charset to UTF8)) ([[utf8mb4 utf8mb4]]). WackoWiki requires that your database is now UTF8 and will not upgrade if your database is not. 

  1. WackoWiki applications used in multi-language mode require a on record conversion.
    2. ##iconv('ISO-8859-1', 'UTF-8', $text)##
    3. ##iconv('ISO-8859-2', 'UTF-8', $text)##
    4. ##iconv('ISO-8859-7', 'UTF-8', $text)##
    5. ##iconv('CP1251', 'UTF-8', $text)##
    1. ##iconv('CP1257', 'UTF-8', $text)##
  2. Unicode entities also require a conversion to UTF-8.
    3. ##$output = preg_replace_callback("/(&#[0-9]+;)/", function($m) { return mb_convert_encoding($m[1], "UTF-8", "HTML-ENTITIES"); }, $input);##

===Migrating to Unicode===
database:
%% ALTER DATABASE
    database_name
    CHARACTER SET = utf8mb4
    COLLATE = utf8mb4_unicode_520_ci; %%

each table:
%%ALTER TABLE
    table_name
    CONVERT TO CHARACTER SET utf8mb4
    COLLATE utf8mb4_unicode_520_ci;
%%

each column:
%% ALTER TABLE
    table_name
    CHANGE column_name column_name
    VARCHAR(191)
    CHARACTER SET utf8mb4
    COLLATE utf8mb4_unicode_520_ci; %%

===Modify connection, client, and server character sets===
Make sure to set the client and server character set as well.
/etc/my.cnf:
%%[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_520_ci%%

Check if these settings work correctly:
%%(cl) mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
+--------------------------+--------------------+
| Variable_name | Value |
+--------------------------+--------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| collation_connection | utf8mb4_unicode_520_ci |
| collation_database | utf8mb4_unicode_520_ci |
| collation_server | utf8mb4_unicode_520_ci |
+--------------------------+--------------------+
10 rows in set (0.00 sec) %%

===Repair and optimize all tables===
Run the following MySQL queries for each table you want to repair and optimize:
%%REPAIR TABLE table_name;
OPTIMIZE TABLE table_name;%%

This can easily be done in one go using the command-line ##mysqlcheck## utility:
%%(cl) $ mysqlcheck -u root -p --auto-repair --optimize --all-databases %%

----
original is located at: ((/Dev/Release/R6.0/Unicode/DbConversion))