Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да разрешим грешка Незаконно смесване на съпоставки (latin1_general_ci,IMPLICIT).

Прекарах половин ден в търсене на отговори на ужасяващата грешка „Незаконно смесване на съпоставки“. Открих, че някои колони в моята база данни не са специално подредени utf8_unicode_ci . Изглежда, че mysql имплицитно е съпоставил тези колони utf8_general_ci .

По-конкретно, изпълнението на заявка „SHOW CREATE TABLE table1“ изведе нещо като следното:

| таблица1 | СЪЗДАВАНЕ НА ТАБЛИЦА 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 ПО ПОДРАЗБИРАНЕ CHARSET=utf8 COLLATE=utf8_unicode_ci |

Обърнете внимание на реда 'col1' varchar(4) CHARACTER SET utf8 NOT NULL няма указано съпоставяне. След това изпълних следната заявка:

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

Това реши грешката ми „Незаконно съчетаване на съпоставки“. Надяваме се, че това може да помогне на някой друг.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да промените форматите за дата и час в MySQL

  2. Как да премахнете ненулево ограничение в MySQL

  3. MySQL:Избиране на множество полета в множество променливи в съхранена процедура

  4. MySQL търси текст от две колони

  5. Съхранение ден и месец (без година)