Como corrigir erro de collation do banco de dados
O que é o erro de collation do banco de dados?
A collation é o conjunto de regras que o MySQL usa para comparar e ordenar texto, como tratar maiúsculas, acentos e qual charset adota. O WordPress moderno usa utf8mb4_unicode_ci, mas bancos antigos ou migrados misturam latin1, utf8 e utf8mb4 em tabelas diferentes. Quando uma consulta tenta unir colunas com collations incompatíveis, o MySQL não sabe qual regra aplicar e aborta a query com erro. A correção é padronizar charset e collation em todas as tabelas e colunas do banco.
Como identificar
- No log ou na tela aparece “Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation”.
- Buscas, filtros ou plugins que cruzam tabelas falham, enquanto páginas simples continuam abrindo.
- O erro surge logo após migrar o site para outro servidor ou importar um dump SQL antigo.
- A tela de Saúde do Site ou um plugin acusam tabelas com collation diferente da recomendada (utf8mb4_unicode_ci).
Como prevenir
- Padronize todo o banco em utf8mb4_unicode_ci e mantenha DB_COLLATE vazio no wp-config.php
- Ao migrar, exporte e importe o dump no mesmo charset de destino para evitar mistura de collations
- Antes de instalar plugins que criam tabelas, confira na Saúde do Site se a collation continua única
Causa
- Dump SQL antigo importado em latin1 ou utf8 enquanto o WordPress novo espera utf8mb4.
- Migração entre servidores com versões de MySQL diferentes, que aplicaram collations padrão distintas.
- Tabela criada por um plugin com collation própria, divergente das tabelas nativas do WordPress.
- Coluna específica com collation herdada do dump, diferente da collation declarada na tabela.
- wp-config.php com DB_CHARSET ou DB_COLLATE fixados em valores que não batem com o banco real.
Como resolver
- Faça backup do banco antes de tudo: exporte o banco completo pelo phpMyAdmin ou WP-CLI. Conversão de collation reescreve todas as tabelas, então o backup é obrigatório antes de qualquer ALTER.
- Descubra quais collations estão em uso: no phpMyAdmin (aba SQL), liste a collation de cada tabela para identificar quais divergem do padrão utf8mb4_unicode_ci.
SELECT TABLE_NAME, TABLE_COLLATION FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE(); - Converta as tabelas para utf8mb4: rode o ALTER TABLE ... CONVERT TO em cada tabela divergente. Isso padroniza charset e collation da tabela e de todas as colunas de texto de uma vez.
- Alinhe o wp-config.php: via FTP, confirme que DB_CHARSET está como utf8mb4 e que DB_COLLATE está vazio. Um DB_COLLATE fixado em valor antigo força o WordPress a recriar tabelas com a collation errada.
- Limpe o cache e teste: limpe qualquer cache de objeto ou de página e refaça a operação que falhava. As consultas que misturavam collations passam a rodar com uma regra única.
-- Padroniza o banco inteiro em utf8mb4 / utf8mb4_unicode_ci
-- 1) Ajusta o charset padrao do banco (novas tabelas ja nascem corretas)
ALTER DATABASE nome_do_banco CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
-- 2) Converte uma tabela e TODAS as suas colunas de texto de uma vez
ALTER TABLE wp_posts CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE wp_postmeta CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 3) Confere o resultado
SHOW TABLE STATUS WHERE Name = 'wp_posts';














