V minulosti existoval pouze utf8
; v budoucnu nyní utf8mb4
bude výchozí znakovou sadou.utf8mb4
je výchozí znaková sada.
V minulosti _general_ci
bylo výchozí řazení; pak _unicode_ci
(Unicode 4.0) bylo lepší než _unicode_520_ci
(Unicode 5.20). V budoucnu (MySQL 8.0) bude výchozí nastavení _0900_ci_ai
(Unicode 9.0).
Mezitím je silnice plná výmolů vytvořených minulými chybami MySQL. A designéři WP jezdí ve velkém tanku, který si nevšímá výmolů.
MySQL 5.6 byla velká díra, která pohltila mnoho uživatelů WP kvůli limitu 767 indexů spolu s indexy WP na příliš dlouhém VARCHAR(255)
a možnost použití utf8mb4
. Máte to dobře za sebou, když máte 5.7.17. (Váš budoucí přechod na 8.0 bude méně hrbolatý.)
To znamená, že nově vytvořené databáze/tabulky/sloupce na 5.7.7+ by neměly mít problém 767, ale věci migrované ze starších verzí (5.5.3+) mohou mít problémy, zvláště pokud něco způsobí změnu na utf8mb4.
Co dělat? Pravděpodobně mi dojde místo, když se pokusím vysvětlit všechny možnosti. Uveďte tedy historii dat, cestu upgradu (pokud existuje), aktuální nastavení, ROW_FORMAT
z tabulek CHARACTER SET
a COLLATION
ze sloupců, výstup SHOW VARIABLES LIKE 'char%';
kde bys měl být? Pro 5.7.7+, utf8mb4
a utf8mb4_unicode_520_ci
kdekoli je to praktické. Tato znaková sada vám dává Emoji a veškerou čínštinu (utf8 ne). Toto třídění je nejlepší dostupné, i když může být těžké si všimnout, kde na tom záleží.
Poznámka:První část názvu řazení je jedinou znakovou sadou, se kterou pracuje. To je utf8_unicode_ci
nefunguje s utf8mb4
.