MySQL : de latin1 à utf8



Make everything UTF-8 everywhere

.

1\. Arrêter la BD MySQL

.

2\. Changer les jeux de caractères du serveur

Dans le fichier de configuration de MySQL :

[client]
default-character-set = utf8

[mysql]
default-character-set = utf8

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8
collation-server = utf8_unicode_ci

Vérifier que les changements sont enregistrés :

mysql> SHOW VARIABLES WHERE Variable_name LIKE "character\\_set\\_%" OR Variable_name LIKE "collation%";

.

3\. Optimiser les tables

En lançant l utilitaire mysqlcheck :

$ mysqlcheck -u root -p --auto-repair --optimize --all-databases

.

4\. Convertir la Collation de la base de donnée

ALTER DATABASE DBNAME CHARACTER SET utf8 COLLATE utf8_unicode_ci;

remplacer DBNAME par le nom de la base de donnée à convertir

.

5\. Convertir la Collation de toutes les tables

SELECT CONCAT(\"ALTER TABLE \", TABLE_SCHEMA, ".", TABLE_NAME," COLLATE utf8_unicode_ci;")
FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA="DBNAME" AND TABLE_TYPE = "BASE TABLE";

remplacer DBNAME par le nom de la base de donnée à convertir.

.

6\. Convertir la Collation de toutes les colonnes de toutes les tables

SELECT CONCAT( aLTER TABLE `", TABLE_NAME,"` CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;") AS    mySQL
FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA= \"DBNAME\" AND TABLE_TYPE=\"BASE TABLE\"

remplacer DBNAME par le nom de la base de donnée à convertir et ajouter SET foreign\_key\_checks = 0; au début et à la fin le remettre à 1.

That s it


Publié le : 20-03-2020 - 18:00