Domanda

ho due database MySQL fisicamente separati su cui devo correre una singola query.

La query ha una sezione di SQL che assomiglia a questo:

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

Funziona bene su database di A, ma su base di dati B ottengo questo errore:

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

Se rimuovo il confronto funziona benissimo su base di dati B, ma sulla base di dati A ottengo questo errore:

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

È disponibile una versione della query che verrà eseguito su entrambi i database?

In alternativa, c'è una configurazione posso cambiare su entrambi i database per rendere la query felice in entrambi i luoghi?

Aggiornamento:

Un database è la versione 5.1.38, Database B è la versione 5.1.34

È stato utile?

Soluzione

qui .

UPDATE:. i suggerimenti che puntano risolto il mio problema, anche se la sintassi è un po 'fuori moda e non c'è bisogno di convertire più ogni colonna, solo la tabella

ALTER TABLE the_latin_one CONVERT TO CHARACTER SET utf8;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top