Mysql migration utf8->utf8mb4

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par saluts92, 17 Août 2019.

  1. saluts92
    saluts92 WRInaute impliqué
    Inscrit:
    12 Avril 2006
    Messages:
    692
    J'aime reçus:
    25
    Bonjour,
    Pour avoir accès à l'enregistrement des émoticons (et autres) saisis depuis des smartphone dans ma base de données Mysql (version 5.7.x), j'ai besoin de migrer l'encodage de ma base de UTF8 en UTF8MB4

    après recherche, il semble qu'il n'y ait pas de problème majeur et que la compatibilté ascendante est assurée.

    Mais yany trouvé très peu de docuementation là dessus, je souhaiterai avoir votre retour d'expérience.

    Etes vous déjà en UTF8mb4 ? la migration s'est elle bien passée ?

    d'avance merci
     
  2. rick38
    rick38 WRInaute passionné
    Inscrit:
    23 Février 2013
    Messages:
    1 186
    J'aime reçus:
    141
    Je l'ai fait, aucun problème.
     
    saluts92 apprécie ceci.
  3. saluts92
    saluts92 WRInaute impliqué
    Inscrit:
    12 Avril 2006
    Messages:
    692
    J'aime reçus:
    25
    ok merci @rick38

    j'ai cru comprendre que l'on ne pouvait pas migrer une seule colonne ou table en ut8mb4 , bien que l'action (dans phpmyadmin par exemple) soit possible

    sais tu pourquoi ?
     
  4. rick38
    rick38 WRInaute passionné
    Inscrit:
    23 Février 2013
    Messages:
    1 186
    J'aime reçus:
    141
    Je n'ai jamais entendu ça, et j'ai fait des oublis qui n'ont pas posé de problème.
     
  5. saluts92
    saluts92 WRInaute impliqué
    Inscrit:
    12 Avril 2006
    Messages:
    692
    J'aime reçus:
    25
    et coté performance ? pas de différence stp ?
     
  6. colonies
    colonies WRInaute occasionnel
    Inscrit:
    10 Septembre 2006
    Messages:
    481
    J'aime reçus:
    53
    Ça m'étonnerait fort que tu voies une différence de perfs.
     
  7. saluts92
    saluts92 WRInaute impliqué
    Inscrit:
    12 Avril 2006
    Messages:
    692
    J'aime reçus:
    25
    ok dernière question

    utilise tu utf8mb4_general_ci OU utf8mb4_unicode_ci ?
    et quelle est la différence stp ?
     
  8. colonies
    colonies WRInaute occasionnel
    Inscrit:
    10 Septembre 2006
    Messages:
    481
    J'aime reçus:
    53
    Personnellement, utf8mb4_general_ci.

    Les différences :
    En français : https://askcodez.com/difference-ent...et-utf8mb4_general_ci-dans-mariadb-mysql.html

    Complément, en anglais : https://stackoverflow.com/questions...e-between-utf8-general-ci-and-utf8-unicode-ci

    À vrai dire, je m'en fous un peu : la quasi totalité de mes champs utf8mb4 concernent du contenu d'utilisateurs sur lesquels je n'utilise aucune fonction de tri : je me contente de le stocker et de l'afficher, c'est tout.
    Le tri se fait généralement par rapport à d'autres champs (une date, le plus souvent, comme par exemple pour cette page : les messages sont classés par date et je ne vois pas de cas concret où on pourrait vouloir classer les messages par ordre alphabétique).

    Il peut éventuellement arriver que je fasse un tri par rapport à un champ titre stocké en utf8mb4 (petite messagerie interne, par exemple, si l'utilisateur choisir de trier les messages par ordre alphabétique des sujets), mais franchement, les différences éventuelles sur des cas rares ne m'empêchent pas de dormir et ne risquent pas de bouleverser mes utilisateurs (s'ils se produisaient).

    Mais si le tri est important pour toi, utilise utf8mb4_unicode_ci... ou une des options plus récentes qui corrigent encore quelques cas rares. Auquel cas, il faudrait passer à MySQL 8 qui a encore corrigé quelques cas dans une nouvelle collation, apparemment (et qui t'apportera de meilleures perfs, soit dit en passant).
     
  9. saluts92
    saluts92 WRInaute impliqué
    Inscrit:
    12 Avril 2006
    Messages:
    692
    J'aime reçus:
    25
    ok merci @colonies

    de plus en Mysql 8 la version par défaut de UTF8 sera mb4 et non plus mb3 si j'ai bien compris
     
  10. colonies
    colonies WRInaute occasionnel
    Inscrit:
    10 Septembre 2006
    Messages:
    481
    J'aime reçus:
    53
  11. saluts92
    saluts92 WRInaute impliqué
    Inscrit:
    12 Avril 2006
    Messages:
    692
    J'aime reçus:
    25
    Ok merci,

    j'ai juste à faire quelques vérifications et etsts sur les champs CHAR, VARCHAR et TEXT qui semblent être les seuls touchés dans cette conversion par rapport à la longueur maximale de ces champs : on passe d 3 octets à 4 octets donc c normal.
     
  12. colonies
    colonies WRInaute occasionnel
    Inscrit:
    10 Septembre 2006
    Messages:
    481
    J'aime reçus:
    53
    Attend... convertir des champs CHAR ? Comment se fait-il que tu aies ce genre de cas ?
    Tu stockes quoi dans ces champs ?
     
  13. saluts92
    saluts92 WRInaute impliqué
    Inscrit:
    12 Avril 2006
    Messages:
    692
    J'aime reçus:
    25
    je n'utilise que des champs VARCHAR et TEXT

    je ne faisais que cité la DOC
     
  14. saluts92
    saluts92 WRInaute impliqué
    Inscrit:
    12 Avril 2006
    Messages:
    692
    J'aime reçus:
    25
    question concernant PHP toutes les fonctions tournant autour de UTF8, telles que utf8_encode ou UTF8_decode, ...

    j'imagine qu'elles utilisent UTF8 sur 4 octets ?
     
  15. colonies
    colonies WRInaute occasionnel
    Inscrit:
    10 Septembre 2006
    Messages:
    481
    J'aime reçus:
    53
  16. saluts92
    saluts92 WRInaute impliqué
    Inscrit:
    12 Avril 2006
    Messages:
    692
    J'aime reçus:
    25
    Petit retour d'expérience suite à migration utf8(mb3) vers utf8mb4 avec MySql 5.7.x
    Attention à la longueur des clefs VARCHAR : la longueur d'un index avec VARCHAR est limitée à 1000 octets
    j'avais l'habitude de coder mes adresse mails avec des VARCHAR(255) sur 3 octets (utf8mb3) cela fait bien moins de 1000 octets (3 x 255 = 765)
    mais avec utf8mb4 ça dépasse : 4 octets x 255 = 1020

    il faut donc coder sur 250 caractères maximum les VARCHAR destinés à un index (unique, etc...) pour les autres (non indexés) auxcun problème
     
Chargement...
Similar Threads - Mysql migration utf8 Forum Date
En vue d'une migration des fonctions mysql_*() vers l'interface PDO objet Développement d'un site Web ou d'une appli mobile 21 Janvier 2010
recherche lettres dans mysql Développement d'un site Web ou d'une appli mobile 11 Juillet 2019
cache mysql maison Développement d'un site Web ou d'une appli mobile 18 Février 2019
Stocker dans des variables php les fonctions MySql Développement d'un site Web ou d'une appli mobile 2 Février 2019
message : [LEGACY][libmysqlclient] Please consider moving to stable and mysqlnd in Administration d'un site Web 8 Novembre 2018
Connexion à un serveur mysql distant Développement d'un site Web ou d'une appli mobile 21 Octobre 2018
Mysql, modifier des chaines avec différents caractères Administration d'un site Web 13 Septembre 2018
Fusionner deux champs sur la même table et même base de donnée Mysql Administration d'un site Web 12 Septembre 2018
Requête Mysql avec des string Développement d'un site Web ou d'une appli mobile 6 Février 2018
Surveiller les connexions à la base de données MySQL Développement d'un site Web ou d'une appli mobile 1 Février 2018
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice