No passado, havia apenas
utf8
; utf8mb4
será o conjunto de caracteres padrão.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
.