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

Varför är tabellen CHARSET inställd på utf8mb4 och COLLATION till utf8mb4_unicode_520_ci

Tidigare fanns det bara utf8; i framtiden, utf8mb4 kommer att vara standardteckenuppsättningen. nu utf8mb4 är standardteckenuppsättningen.

Tidigare _general_ci var standardsorteringen; sedan _unicode_ci (Unicode 4.0) var bättre än _unicode_520_ci (Unicode 5.20). I framtiden (MySQL 8.0) kommer standarden att vara _0900_ci_ai (Unicode 9.0).

Samtidigt är vägen full av gropar som skapats av MySQL:s tidigare misstag. Och WP-designers kör i en stor tank som inte märker gropen.

MySQL 5.6 var ett stort hål som svalde många WP-användare på grund av en gräns på 767 på index tillsammans med WP-index på den alltför långa VARCHAR(255) och möjligheten att använda utf8mb4 . Du är långt över det genom att ha 5.7.17. (Din framtida övergång till 8.0 kommer att bli mindre ojämn.)

Det vill säga, nyskapade databaser/tabeller/kolumner på 5.7.7+ ska inte uppleva 767-problemet, men saker som migrerats från äldre versioner (5.5.3+) kan ha problem, särskilt om något får dig att ändra till utf8mb4.

Vad ska man göra? Jag kommer förmodligen få ont om utrymme när jag försöker stava ut alla alternativen. Så ange historiken för data, uppgraderingssökvägen (om någon), de aktuella inställningarna, ROW_FORMAT av tabellerna, CHARACTER SET och COLLATION av kolumnerna, utdata från SHOW VARIABLES LIKE 'char%';

Var ska du vara? För 5.7.7+, utf8mb4 och utf8mb4_unicode_520_ci varhelst det är praktiskt. Den teckenuppsättningen ger dig Emoji och hela kinesiska (utf8 gör det inte). Den sammanställningen är den bästa tillgängliga, även om du kan vara svårt att märka var det är viktigt.

Obs:den första delen av sorteringsnamnet är den enda teckenuppsättning som den fungerar med. Det är utf8_unicode_ci fungerar inte med utf8mb4 .




  1. Docker:PhpMyAdmin har en uppladdningsgräns på 2048KiB

  2. genom att använda group_concat i PHPMYADMIN kommer resultatet att visas som [BLOB - 3B]

  3. Standardvärden för datatyperna varchar och int mysql

  4. Hur ger jag mig själv administratörsåtkomst till en lokal SQL Server-instans?