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