Незаконное смешение ошибки сортировки utf8mb4 с peewee

У меня ошибка сопоставления с MySQL, а именно:

OperationalError: (1267, "Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='")

После проверки я заметил, что это связано с некоторыми эмозисами, в основном с смайлами. Я проверил мою базу данных MySQL, и по умолчанию используется utf8mb4 charset, как показано:

+------------+---------------------------------------------------------------------------------------------------+
| Database | Create Database |
+------------+---------------------------------------------------------------------------------------------------+
| Dictionary | CREATE DATABASE 'Dictionary' /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */ |
+------------+---------------------------------------------------------------------------------------------------+

Мои настройки MySQL также показывают, что все необходимое для utf8mb4:

+--------------------------+--------------------+
| Variable_name | Value |
+--------------------------+--------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| collation_connection | utf8mb4_unicode_ci |
| collation_database | utf8mb4_unicode_ci |
| collation_server | utf8mb4_unicode_ci |
+--------------------------+--------------------+

Я использую Peewee (модуль Python), чтобы сделать мои запросы, и следующая строка - это та, которая вызывает ошибку сортировки

SingleWords.get(SingleWords.word == lowercase)

Для меня это не большая проблема, если я не могу вставить определенные эмоции, но мне все равно хотелось бы, если это было возможно. Я понятия не имею, почему это происходит, какие-то мысли?

1 ответ

попробуй это

SELECT * COLLATE latin1_general_ci FROM table;

это выберет все с помощью collate latin1_general_ci

licensed under cc by-sa 3.0 with attribution.