91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Flask項目中向Mysql存入Emoji表情引起的Bug

發布時間:2020-08-02 07:29:20 來源:網絡 閱讀:497 作者:林樹楷 欄目:編程語言

Bug背景

之前在寫Flask入門項目Flask Mega項目的時候,一直都是用SQLite,后面切換到Mysql數據庫發現在存入一些EMOJI表情符號的時候,會出現如下的報錯。

Flask項目中向Mysql存入Emoji表情引起的Bug

Bug解決思路

剛開始覺得應該是數據庫的編碼的問題,因為之前也遇到數據庫存入特殊符號的時候發生報錯。那先查看服務器上面的數據庫編碼格式。

show variables like '%char%';

通過查看數據庫編碼發現都是utf8格式。然后查閱有關的資料,以及翻閱之前做過的筆記發現,Mysql中的utf8編碼格式最多支持最多3字節的數據,而emoji表情字符是4個字節的字符,如果采用utf8的數據庫插入表情字符,就會因為被截斷導致無法存入到數據庫。

Bug解決過程

大概理解了原理就好辦了,修改數據庫的編碼格式,因為我是使用的是Mariadb數據庫

Flask項目中向Mysql存入Emoji表情引起的Bug

我修改的是/etc/my.cnf,/etc/my.cnf.d/目錄下的配置文件,大概修改有這幾項內容:

[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 
init_connect=’SET NAMES utf8mb4’

然后重啟mariadb數據庫,進入數據庫中查看是否修改成功:

Flask項目中向Mysql存入Emoji表情引起的Bug

修改成功,然后接著修改數據庫和表的編碼格式:

alter database database_name character set 'utf8mb4' collate 'utf8mb4_general_ci';

表格編碼格式:

alter table table_name convert to character set 'utf8mb4' collate 'utf8mb4_general_ci';

查看是否修改成功:

Flask項目中向Mysql存入Emoji表情引起的Bug

修改成功!!!

重啟項目然后再次寫入帶有Emoji表情符號的評論到數據庫中,發現還是出現了問題,重新梳理了一下思路大概是因為Flask項目中的SQLAlchemy連接Mysql的編碼格式錯誤,重新修改了一下連接數據庫的編碼格式:

Flask項目中向Mysql存入Emoji表情引起的Bug

再次重啟項目重新發布評論:

Flask項目中向Mysql存入Emoji表情引起的Bug

大功告成,問題解決。

參考鏈接

https://blog.csdn.net/woslx/article/details/49685111
https://blog.csdn.net/poice00/article/details/52129351

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

盐源县| 昭苏县| 昭觉县| 赤壁市| 西吉县| 西宁市| 蕉岭县| 永安市| 油尖旺区| 荣成市| 本溪| 沿河| 丰城市| 喜德县| 同德县| 泽库县| 吉木乃县| 苏尼特右旗| 福建省| 佛冈县| 永平县| 鄯善县| 江口县| 安龙县| 修水县| 寿宁县| 河东区| 天祝| 阿瓦提县| 丁青县| 湖口县| 沧源| 七台河市| 定兴县| 宁乡县| 武清区| 兰溪市| 城口县| 西贡区| 达拉特旗| 德保县|