Pasé medio día buscando respuestas al temido error "Mezcla ilegal de intercalaciones". Encontré que algunas columnas en mi base de datos no estaban cotejadas específicamente utf8_unicode_ci . Parece que mysql recopiló implícitamente estas columnas utf8_general_ci .
Específicamente, ejecutar una consulta 'MOSTRAR CREAR TABLA table1' generó algo como lo siguiente:
| mesa1 | CREAR TABLA table1
(id
int(11) NO NULO,col1
varchar(4) CONJUNTO DE CARACTERES utf8 NO NULO,col2
int(11) NO NULO, CLAVE PRIMARIA (photo_id
,tag
)) MOTOR=InnoDB CONJUNTO DE CARACTERES POR DEFECTO=utf8 COLLATE=utf8_unicode_ci |
Tenga en cuenta la línea 'col1' varchar(4) CHARACTER SET utf8 NOT NULL no tiene una intercalación especificada. Luego ejecuté la siguiente consulta:
ALTER TABLE table1 CAMBIO col1 col1 VARCHAR(4) CONJUNTO DE CARACTERES utf8COLLATE utf8_unicode_ci NOT NULL;
Esto resolvió mi error "Mezcla ilegal de intercalaciones". Espero que esto pueda ayudar a alguien más.