使用django向mysql中存入emoji表情

2021-07-24 06:20:27 字數 2163 閱讀 7793

更新2023年3月21日

在django admin介面,進行修改帶有emoji的資料表時,報錯:(1366, "incorrect string value: '\\xf0\\x9f\\x90\\xac' for column 'object_repr' at row 1")

這是因為你在通過admin介面修改資料時,django會將你的操作記錄在django_admin_log表中,這個表中的object_repr欄位存放emoji資料時出錯。

解決辦法:

mysql -u 使用者名稱 -p 密碼

alter

table django_admin_log modify column object_repr varchar(255) character

set utf8mb4 collate utf8mb4_unicode_ci not

null;

之前將資料庫的編碼設定成utf8,當存入字母或中文字元時,都是3個直接.

而當使用者的暱稱存在emoji表情時,該表情對應的編碼是4個直接,也就是utf8mb4格式.

1,進入mysql,執行命令

show variables where variable_name like

'character\_set\_%'

or variable_name like

'collation%';

檢視到資料庫的字符集設定

2,修改資料庫,表,列的字符集.

修改database字符集

alter

database database_name character

set = utf8mb4 collate utf8mb4_unicode_ci;

修改table字符集

alter

table table_name convert to

character

set utf8mb4 collate utf8mb4_unicode_ci;

修改column字符集

alter

table table_name change column_name column_name varchar(191) character

set utf8mb4 collate utf8mb4_unicode_ci not

null;

上面的命令我沒有打錯,change後面跟兩遍表名。

請不要單純的複製貼上,你可能需要修改資料庫名,表名,列名和not null.

3,修改django連線資料庫時的字符集

在django專案的setting檔案中,你必須設定charset=utf8mb4,

資料庫的配置模板如下:

databases = ,}}

4,最後一步,不是必須的.但是強烈建議進行設定.

在/etc/mysql/my.cnf檔案中,設定以下幾項:

[client]

default-character-set = utf8mb4

[mysql]

default-character-set = utf8mb4

[mysqld]

character-set-client-handshake = false

character-set-server = utf8mb4

collation-server = utf8mb4_unicode_ci

using emojis in django model fields

how to support full unicode in mysql databases

supporting new emojis on ios 6

supporting ios 5 new emoji encoding

Django向MySQL中插入漢字出錯後的解決方法

os version kubuntu 17.04.1 mysql version 5.7.18 django version 1.8.0 按照塗老師的教程學習django的 admin 部分時,runserver 後登陸 admin 頁面,新增 article,發現報錯,如下 1366,incorr...

Django中mysql的使用

首先需要安裝mysqlclient pip install mysqlclient然後在mysql資料庫中建立好資料庫跟表 安裝完成之後,修改專案的settings.py檔案中資料庫的配置項 資料配置檔案 databases 然後在應用中的views.py中使用django自帶的connection...

django使用mysql開發 Linux

一 安裝mysql pip install mysql python 二 登入mysql 命令 mysql uroot p mysql預設密碼為mysql 三 檢視資料庫列表show databases 刪除不要的資料庫drop 資料庫名稱 開啟use 資料庫名稱 建立資料庫create datab...