Modifié les charsets sur une base de donnée mysql

En utilisant l’intelligence de MySQL

Pour trouver la liste des tables à modifié simplement faire:

SELECT table_name FROM `information_schema`.`TABLES` 
  WHERE table_schema = 'nom_de_la_base_de_donnée'

Puis pour les modifiés

ALTER TABLE `nom_de_la_db`.`nom_de_la_table` 
  convert TO character SET nom_du_charset;


L’avantage d’utiliser convert to est que MySQL prend soin de modifié les types de variables pour accomodé le nombre de caractères original. Or si vous passer de latin-1 qui utilise 1 seul octet par caractère dans un champ text qui peut accommoder jusqu’à 65535 caractère et que vous convertissez vers UTF8 qui peut nescéssiter jusqu’à 3 octets par caractère pour un maximum total de 3 × 65,535 = 196,605 bytes et bien MySQL prendra le soin de convertir le type à MEDIUMTEXT qui peut accomoder les 196,608 caractères requis. MySQL va toujours utiliser le plus petit format possible qui peut prendre la longueur de la chaine requise.

1 Comment

  1. Merci Stéphan pour le truc. Je vais passer le mot ! :)

Leave a Reply