MySQL – Come identificare tutte le Colonne, Tabelle e Database con la stessa Collation e/o Character Set

MySQL Master-Master Replication setup in 5 easy steps

Se vi siete imbattuti in questo articolo è molto probabile che stiate cercando di normalizzare la Collation di uno o più Database, tabelle e/o colonne contenute all’interno di una istanza MySQL per risolvere un problema di illegal mix come il seguente:

Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation …

Prima di proseguire, è opportuno fare chiarezza sul significato del termine Collation, che spesso viene impropriamente confuso con il Character Set. Il modo migliore per farlo è leggere l’illuminante definizione presente nella documentazione ufficiale MySQL:

A character set is a set of symbols and encodings. A collation is a set of rules for comparing characters in a character set.

Vediamo ora come fare per localizzare in modo veloce ed efficace le colonne aventi una Collation specifica. Il modo più semplice e veloce che ho trovato finora è farlo utilizzando la query che riporto di seguito, proveniente da questa risposta sul sito StackOverflow  (un grazie a Dean Rather per averla condivisa):

E’ ovviamente necessario sostituire    con il nome della Collation e/o del Character Set che si desidera individuare: in alternativa, è anche possibile ragionare al contrario, modificando l’istruzione WHERE in modo da cercare tutte le colonne che hanno una Collation DIVERSA da quella predefinita.

Una volta identificate le colonne – e i relativi Database – è possibile effettuare delle operazioni per modificare la Collation di tutte tabelle (e/o il Character Set di tutte le colonne) seguendo le istruzioni descritte in questo altro articolo.

 

About Ryan

IT Project Manager, Web Interface Architect e Lead Developer di numerosi siti e servizi web ad alto traffico in Italia e in Europa. Dal 2010 si occupa anche della progettazione di App e giochi per dispositivi Android, iOS e Mobile Phone per conto di numerose società italiane. Microsoft MVP for Development Technologies dal 2018.

View all posts by Ryan

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.