0

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)

特定の絵文字を挿入できなくても問題はありませんが、可能であれば挿入したいと考えています。なぜこれが起こっているのかわかりません。何か考えはありますか?

4

1 に答える 1