Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como resolver o erro de mixagem ilegal de agrupamentos (latin1_general_ci,IMPLICIT)


Passei meio dia procurando respostas para o temido erro "Mistura ilegal de agrupamentos". Descobri que algumas colunas em meu banco de dados não foram especificamente agrupadas utf8_unicode_ci . Parece que o mysql coletou implicitamente essas colunas utf8_general_ci .

Especificamente, a execução de uma consulta 'SHOW CREATE TABLE table1' gerou algo como o seguinte:

| tabela1 | CRIAR TABELA table1 (id int(11) NOT NULL,col1 varchar(4) CHARACTER SET utf8 NOT NULL,col2 int(11) NOT NULL, PRIMARY KEY (photo_id ,tag )) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci |

Observe a linha 'col1' varchar(4) CHARACTER SET utf8 NOT NULL não tem um agrupamento especificado. Em seguida, executei a seguinte consulta:

ALTER TABLE tabela1 CHANGE col1 col1 VARCHAR(4) CHARACTER SET utf8COLLATE utf8_unicode_ci NOT NULL;

Isso resolveu meu erro "Mistura ilegal de agrupamentos". Espero que isso possa ajudar alguém por aí.