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?