phpMyAdmin
 sql >> Database >  >> Database Tools >> phpMyAdmin

Perché la tabella CHARSET è impostata su utf8mb4 e COLLATION su utf8mb4_unicode_520_ci

In passato esisteva solo utf8; in futuro, utf8mb4 sarà il set di caratteri predefinito. ora 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 .