In passato esisteva solo utf8
; in futuro, ora utf8mb4
sarà il set di caratteri predefinito.utf8mb4
è il set di caratteri predefinito.
In passato, _general_ci
era la raccolta predefinita; quindi _unicode_ci
(Unicode 4.0) era migliore, quindi _unicode_520_ci
(Unicode 5.20). In futuro (MySQL 8.0), l'impostazione predefinita sarà _0900_ci_ai
(Unicode 9.0).
Nel frattempo, la strada è piena di buche generate dagli errori passati di MySQL. E i designer di WP stanno guidando in un grande serbatoio che non si accorge delle buche.
MySQL 5.6 è stata una grande buca che ha inghiottito molti utenti di WP a causa di un limite di 767 indici insieme agli indici WP sul VARCHAR(255)
eccessivamente lungo e la possibilità di utilizzare utf8mb4
. Sei ben oltre avendo 5.7.17. (Il tuo passaggio futuro all'8.0 sarà meno accidentato.)
Cioè, i database/tabelle/colonne appena creati su 5.7.7+ non dovrebbero presentare il problema 767, ma le cose migrate da versioni precedenti (5.5.3+) potrebbero avere problemi, specialmente se qualcosa ti fa passare a utf8mb4.
Cosa fare? Probabilmente esaurirò lo spazio cercando di precisare tutte le opzioni. Quindi fornisci la cronologia dei dati, il percorso di aggiornamento (se presente), le impostazioni correnti, il ROW_FORMAT
delle tabelle, il CHARACTER SET
e COLLATION
delle colonne, l'output di SHOW VARIABLES LIKE 'char%';
Dove dovresti essere? Per 5.7.7+, utf8mb4
e utf8mb4_unicode_520_ci
ovunque pratico. Quel set di caratteri ti dà Emoji e tutto il cinese (utf8 no). Quella raccolta è la migliore disponibile, anche se potrebbe essere difficile notare dove conta.
Nota:la prima parte del nome di confronto è l'unico set di caratteri con cui funziona. Questo è utf8_unicode_ci
non funziona con utf8mb4
.