In het verleden was er alleen utf8
; in de toekomst, nu utf8mb4
zal de standaard tekenset zijn.utf8mb4
is de standaard tekenset.
In het verleden, _general_ci
was de standaardsortering; dan _unicode_ci
(Unicode 4.0) was beter, dan _unicode_520_ci
(Unicode 5.20). In de toekomst (MySQL 8.0) is de standaard _0900_ci_ai
(Unicode 9.0).
Ondertussen zit de weg vol kuilen die zijn ontstaan door fouten uit het verleden van MySQL. En WP-ontwerpers rijden in een grote tank die de kuilen niet opmerkt.
MySQL 5.6 was een grote kuil die menig WP-gebruiker opslokte vanwege een limiet van 767 op indexen samen met WP-indexen op de te lange VARCHAR(255)
en de mogelijkheid om utf8mb4
. te gebruiken . Je bent er ver voorbij door 5.7.17. (Je toekomstige overstap naar 8.0 zal minder hobbelig zijn.)
Dat wil zeggen, nieuw aangemaakte databases/tabellen/kolommen op 5.7.7+ zouden het 767-probleem niet moeten ervaren, maar dingen die zijn gemigreerd van oudere versies (5.5.3+) kunnen problemen hebben, vooral als iets ervoor zorgt dat u overschakelt naar utf8mb4.
Wat moeten we doen? Ik zal waarschijnlijk geen ruimte meer hebben om alle opties te spellen. Geef dus de geschiedenis van de gegevens, het upgradepad (indien aanwezig), de huidige instellingen, de ROW_FORMAT
van de tabellen, de CHARACTER SET
en COLLATION
van de kolommen, de uitvoer van SHOW VARIABLES LIKE 'char%';
Waar moet je zijn? Voor 5.7.7+, utf8mb4
en utf8mb4_unicode_520_ci
waar praktisch. Die tekenset geeft je Emoji en al het Chinees (utf8 niet). Die sortering is de best beschikbare, hoewel je misschien moeilijk kunt zien waar het ertoe doet.
Opmerking:het eerste deel van de sorteernaam is de enige tekenset waarmee het werkt. Dat is utf8_unicode_ci
werkt niet met utf8mb4
.