Pergunta

Eu tenho dois bancos de dados MySQL fisicamente separados nos quais tenho que executar uma única consulta.

A consulta tem uma seção do SQL que se parece com o seguinte:

and foo_table.bar_column like concat('%', rules.pattern, '%') COLLATE utf8_general_ci

Ele funciona bem no banco de dados A, mas no banco de dados BI recebe este erro:

ERROR 1253 (42000): COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'latin1'

Se eu remover o agrupamento, ele é bom no banco de dados B, mas no banco de dados ai receba este erro:

ERROR 1267 (HY000): Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation 'like'

Existe uma versão da consulta que será executada nos dois bancos de dados?

Ou existe uma configuração que eu possa mudar em qualquer banco de dados para fazer a consulta feliz nos dois lugares?

Atualizar:

O banco de dados A é a versão 5.1.38, o banco de dados B é a versão 5.1.34

Foi útil?

Solução

Alguns promissores informação aqui.

ATUALIZAR: As sugestões nesse link resolveram meu problema, embora a sintaxe esteja um pouco desatualizada e você não precise mais converter cada coluna, apenas a tabela.

ALTER TABLE the_latin_one CONVERT TO CHARACTER SET utf8;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top