Il character set definisce i caratteri rappresentabili; la collation stabilisce regole di confronto e ordinamento. In MySQL 8 usa utf8mb4 per Unicode completo, evitando di trattare il vecchio alias utf8 come equivalente.
CREATE DATABASE esempio
CHARACTER SET utf8mb4
COLLATE utf8mb4_0900_ai_ci;La collation dell’esempio è specifica di MySQL 8: verifica disponibilità e compatibilità se usi MariaDB o versioni differenti. ai e ci indicano confronti senza distinzione di accenti e maiuscole; non sono adatti a ogni dominio, ad esempio identificativi che devono distinguere le maiuscole.
SELECT VERSION(), @@character_set_server, @@collation_server;
SHOW COLLATION WHERE Charset = 'utf8mb4';Il default server si configura con character-set-server e collation-server nel file effettivamente letto da mysqld. Cambiare il default del server o del database non converte i dati e le colonne esistenti. Una conversione va pianificata e provata su copia, controllando indici unici e possibili collisioni. “MySQL 14.14” nel vecchio articolo indicava una versione del client, non la release del server.
Impostare e verificare il default
Per un server MySQL 8, dopo aver salvato una copia del file INI effettivamente usato, sotto [mysqld] puoi impostare:
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_0900_ai_ciProgramma il riavvio del servizio secondo l’installazione. Ricollegati e ripeti la SELECT delle variabili riportata sopra: devono mostrare i valori scelti. Per il database creato nell’esempio usa:
SHOW CREATE DATABASE esempio;Il risultato deve contenere charset e collation attesi. Per cambiare soltanto il default di un database esistente usa ALTER DATABASE esempio CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci; rimane distinto dalla conversione delle colonne. Non applicare questa collation specifica MySQL 8 a MariaDB.