Fixing an Illegal mix of Collation

Ola pessoal,

Ao executar o backup de uma base MySQL ou na execução de uma view, identifiquei diversas vezes o erro:

Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (latin1_general_ci,IMPLICIT) for operation ‘=’

Existem diversos outros eventos para esta retorno, porém qual o motivo?

Em todos os casos, me deparei com views que faziam consultas entre campos com collations diferentes, impedindo assim a conclusão da query.

Para resolver esta questão, execute a seguinte consulta a qual encontrei no blog interworks, para identificar a coluna com problemas (Alterando o Collation para o que você teve o retorno de erro):

SELECT table_schema, table_name, column_name, character_set_name, collation_name
FROM information_schema.columns
WHERE collation_name = ‘latin1_general_ci’
ORDER BY table_schema, table_name,ordinal_position;

Dai você pode decidir em alterar os collations de cada campo:

ALTER TABLE tabela CHANGE campo_nomeatual campo_novonome tipo(tamanho) CHARACTER SET encoding COLLATE collation;

Ou na própria tabela dependendo da sua necessidade:

ALTER TABLE tbl_name CONVERT TO CHARACTER SET latin1 COLLATE ‘latin1_swedish_ci’;


É isso ai pessoal.

Dúvidas, criticas ou sugestões? Fiquem a vontade, todo retorno é construtivo 😀

Jose Wilson

Deixe uma resposta