Sauvegarde et restauration MySQL sans problème d'encodage

charset

L'utilisation de sauvegardes de base de données MySQL nécessite quelques précautions au sujet de l'encodage des caractères.

Depuis la version 5 de MySQL, le format par défaut des tables est passé du latin-1 à l'UTF8.
Cependant, la commande en ligne mysql conserve l'encodage en latin-1 des versions précédentes.

Prenons l'exemple d'une sauvegarde faite par la commande mysqldump :

mysqldump --opt --force --user=root --password=password  --databases test \
> mysql-test-`date +%y%m%d`.sql ;

Jusqu'à la version MySQL 4, la ligne de commande suivante assurait la restauration :

mysql -u root -p password < mysql-test-080227.sql

Depuis MySQL 5, la restauration doit être décomposée. Par exemple :

mysql -u root -p password

Puis, on change l'encodage de mysql et l'on restaure la sauvegarde :

SET CHARACTER SET 'utf8';
SET collation_connection = 'utf8_general_ci';
source ./mysql-test-080227.sql