sql >> Base de Datos >  >> RDS >> Mysql

Cómo resolver el error de combinación ilegal de intercalaciones (latin1_general_ci, IMPLÍCITO)

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.