前提・実現したいこと
Djangoアプリにて、絵文字入力と表示をするために、utf8mb4の設定を行ったが、
管理画面から登録するとエラーとなる。
ただし、直接コマンドラインでMysqlに接続し、インサートする場合はエラーとならずインサートされる。
以下に、設定内容、Djangoのファイルのソースコードを記載いたします。
解決にあたってその他設定すべき内容等ございましたら、教示のほどお願いいたします。
発生している問題・エラーメッセージ
1366, "Incorrect string value: '\xF0\x9F\x8C\x90\xE9\x9B...' for column 'object_repr' at row 1"
該当のソースコード
■setting.py DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': '★★★★★', # DB名を設定 'USER': '★★★★', # DBへ接続するユーザIDを設定 'PASSWORD': '★★★★★', # DBへ接続するユーザIDのパスワードを設定 'HOST': '○○.○○.○○.○○', 'PORT': '○○○○', 'OPTIONS': { 'autocommit': True, 'charset': 'utf8mb4', }, } } ■MySQLの設定 $ mysql> show create table characters; | characters | CREATE TABLE `characters` ( `id` char(32) NOT NULL, `path` char(26) NOT NULL, `name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, `image` varchar(200) DEFAULT NULL, `publishedAt` datetime(6) DEFAULT NULL, ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
確認したこと
■my.cnf(以下を記載)
[mysql]
default-character-set=utf8mb4
[mysqld]
Only allow connections from localhost
bind-address = ○○○.○.○.○
secure-file-priv = ""
character-set-server = utf8mb4
skip-character-set-client-handshake
character-set-server = utf8mb4
collation-server = utf8mb4_0900_ai_ci
init-connect = SET NAMES utf8mb4
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[client]
default-character-set = utf8mb4
■Mysqlの文字コード確認
+--------------------------+--------------------+
| 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_0900_ai_ci |
| collation_database | utf8mb4_0900_ai_ci |
| collation_server | utf8mb4_0900_ai_ci |
+--------------------------+--------------------+
補足情報(FW/ツールのバージョンなど)
mysql (Ver 8.0.12)
Python (Ver 3.7.0)
Django (Ver 2.1.3)
回答1件
あなたの回答
tips
プレビュー