Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Error Code: 1267. Illegal mix of collations (utf8mb4_0900_ai_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '='

Bom dia a todos

Não é exatamente uma dúvida e sim relatar um erro que aconteceu comigo e a solução caso alguém tenha o mesmo problema que eu

Na hora de realizar o insert de dados de um schema para outro, eu tive esse erro:

Error Code: 1267. Illegal mix of collations (utf8mb4_0900_ai_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '='

Aí eu entendi meu erro. Ontem eu fui pesquisar o padrão de charset e collation para o Brasil e encontrei neste site que o padrão atual é: utf8mb4 para charset e utf8mb4_general_ci para collation. E com isso, eu alterei o meu padrão do schema para esse.

Só que a minha tabela antiga estava em utf8mb4_0900_ai_ci, e para corrigir isso, tive que alterar o padrão do collation, igual foi falado neste fórum:

//alterei o collate da tabela antiga para ficar igual o da nova
where CODIGO_DO_PRODUTO collate utf8mb4_general_ci not in (select CODIGO FROM produtos);

E com isso deu certo. Query completa abaixo:

insert into produtos (CODIGO,DESCRICAO,SABOR,TAMANHO,EMBALAGEM,PRECO_LISTA) 
select tabela_de_produtos.CODIGO_DO_PRODUTO,tabela_de_produtos.NOME_DO_PRODUTO,tabela_de_produtos.SABOR,tabela_de_produtos.TAMANHO,
tabela_de_produtos.EMBALAGEM,tabela_de_produtos.PRECO_DE_LISTA from sucos_vendas.tabela_de_produtos
 where CODIGO_DO_PRODUTO collate utf8mb4_general_ci not in (select CODIGO FROM produtos);

Ps: já aproveitando esse gancho, realmente o utf8mb4 para charset e utf8mb4_general_ci para collation são os mais recomendados para o padrão Brasil ou tem outro mais ideal?

1 resposta
solução!

Oi, Murilo! Tudo bem?

Obrigada por compartilhar o erro que você enfrentou e a solução que encontrou. É muito útil para outras pessoas que possam enfrentar o mesmo problema, obrigada por contribuir com a nossa comunidade!

Quanto à sua pergunta sobre o charset e collation mais recomendados para o padrão Brasil, o "utf8mb4" para charset e "utf8mb4_general_ci" para collation são sim os mais recomendados. O charset "utf8mb4" suporta uma ampla variedade de caracteres, incluindo emojis, e o collation "utf8mb4_general_ci" é case-insensitive e apropriado para a maioria dos casos.

Espero ter ajudado a esclarecer a sua dúvida! Se tiver mais alguma dúvida pode contar com o fórum, ficarei super feliz em poder ajudar!

Um forte abraço e bons estudos!

Caso este post tenha te ajudado, por favor, marcar como solucionado ✓