phpMyAdmin
 sql >> Base de Dados >  >> Database Tools >> phpMyAdmin

Por que a tabela CHARSET está definida como utf8mb4 e COLLATION como utf8mb4_unicode_520_ci


No passado, havia apenas utf8; no futuro, utf8mb4 será o conjunto de caracteres padrão. agora utf8mb4 é o conjunto de caracteres padrão.

No passado, _general_ci era o agrupamento padrão; então _unicode_ci (Unicode 4.0) era melhor, então _unicode_520_ci (Unicode 5.20). No futuro (MySQL 8.0), o padrão será _0900_ci_ai (Unicode 9.0).

Enquanto isso, a estrada está cheia de buracos gerados pelos erros passados ​​do MySQL. E os designers do WP estão dirigindo em um tanque grande que não percebe os buracos.

O MySQL 5.6 foi um grande buraco que engoliu muitos usuários WP por causa de um limite de 767 em índices junto com índices WP no muito longo VARCHAR(255) e a possibilidade de usar utf8mb4 . Você está bem além disso por ter 5.7.17. (Sua mudança futura para 8.0 será menos acidentada.)

Ou seja, bancos de dados/tabelas/colunas recém-criados em 5.7.7+ não devem apresentar o problema 767, mas coisas migradas de versões mais antigas (5.5.3+) podem ter problemas, especialmente se algo fizer com que você mude para utf8mb4.

O que fazer? Provavelmente ficarei sem espaço tentando explicar todas as opções. Portanto, forneça o histórico dos dados, o caminho de atualização (se houver), as configurações atuais, o ROW_FORMAT das tabelas, o CHARACTER SET e COLLATION das colunas, a saída de SHOW VARIABLES LIKE 'char%';

Onde você deveria estar? Para 5.7.7+, utf8mb4 e utf8mb4_unicode_520_ci sempre que prático. Esse conjunto de caracteres fornece Emoji e todos os chineses (utf8 não). Esse agrupamento é o melhor disponível, embora você possa ter dificuldade em perceber onde isso importa.

Observação:a primeira parte do nome do agrupamento é o único conjunto de caracteres com o qual ele funciona. Isso é utf8_unicode_ci não funciona com utf8mb4 .