sql >> Databáze >  >> Database Tools >> phpMyAdmin

Proč je tabulka CHARSET nastavena na utf8mb4 a COLLATION na utf8mb4_unicode_520_ci

V minulosti existoval pouze utf8; v budoucnu utf8mb4 bude výchozí znakovou sadou. nyní 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 .




  1. Chyba syntaxe MySQL DBCC CHECKIDENT

  2. Import .sql do MS Access pomocí OBDC

  3. Neexistuje nějaký způsob, jak ručně hromadně upravovat záznamy na php MyAdmin?

  4. Nelze inicializovat mbstring pomocí PHP 7