W przeszłości istniał tylko utf8
; w przyszłości teraz utf8mb4
będzie domyślnym zestawem znaków.utf8mb4
to domyślny zestaw znaków.
W przeszłości _general_ci
był domyślnym sortowaniem; następnie _unicode_ci
(Unicode 4.0) był lepszy, potem _unicode_520_ci
(Unicode 5.20). W przyszłości (MySQL 8.0) domyślnym będzie _0900_ci_ai
(Unicode 9.0).
Tymczasem droga jest pełna dziur generowanych przez błędy MySQL z przeszłości. A projektanci WP jeżdżą dużym czołgiem, który nie zauważa dziur.
MySQL 5.6 był wielką dziurą, która pochłonęła wielu użytkowników WP z powodu 767 limitu indeksów wraz z indeksami WP na nadmiernie długim VARCHAR(255)
oraz możliwość korzystania z utf8mb4
. Już dobrze minęłaś, mając 5.7.17. (Twój przyszły ruch na 8.0 będzie mniej wyboisty.)
Oznacza to, że nowo utworzone bazy danych/tabele/kolumny w wersji 5.7.7+ nie powinny mieć problemu z 767, ale rzeczy przeniesione ze starszych wersji (5.5.3+) mogą mieć problemy, zwłaszcza jeśli coś powoduje zmianę na utf8mb4.
Co robić? Prawdopodobnie zabraknie mi miejsca, próbując wyjaśnić wszystkie opcje. Podaj więc historię danych, ścieżkę aktualizacji (jeśli istnieje), bieżące ustawienia, ROW_FORMAT
tabel, CHARACTER SET
i COLLATION
kolumn, wyjście SHOW VARIABLES LIKE 'char%';
Gdzie powinieneś być? W przypadku wersji 5.7.7+ utf8mb4
i utf8mb4_unicode_520_ci
wszędzie tam, gdzie jest to praktyczne. Ten zestaw znaków daje Ci Emoji i cały chiński (utf8 nie). To zestawienie jest najlepsze z dostępnych, chociaż może być trudno zauważyć, gdzie ma to znaczenie.
Uwaga:pierwsza część nazwy sortowania jest jedynym zestawem znaków, z którym działa. To jest utf8_unicode_ci
nie działa z utf8mb4
.