Incoerenti errori MySQL COLLATE attraverso banche dati
-
20-09-2019 - |
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
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;