InternalError Incorrect string value: '\\xF0\\x9F\\x91\\x87' for column 插入❤表情符號錯誤

向數據text字段寫入時報錯 : 

sqlalchemy.exc.InternalError: (pymysql.err.InternalError) (1366, "Incorrect string value: '\\xF0\\x9F\\x91\\x87</...' for column 'xmlContents' at row 8")

一般來說Mysql(小於5.5.3)字符集設置爲utf8,指定連接的字符集也爲utf8,但是,當字符串中有特殊字符(如emoji表情符號,以及其他凡是轉成utf8要佔用4字節的字符)就會有問題會報錯 

遇到這個問題,有兩種解決方式:

  •    程序裏轉換一下如emoji Util之類的解決方式將特殊字符替換成"" 空字符串
  •    單獨設置字符集 將 庫/表/字段 都設置爲utf8mb

連接數據庫也需要設置mysql_url = mysql+pymysql://%(user)s:%(password)s@%(host)s:%(port)s/%(database)s?charset=utf8mb

修改庫的字符集
語法:alter database 庫名 default character set 字符集;
alter database test default character set utf8mb4;
修改表的字符集
語法:alter table 表名 convert to character set 字符集;
alter table test1 convert to character set utf8mb4;
修改字段的字符集
語法:alter table 表名 modify 字段名 字段屬性 character set 字符集;
alter table test1 modify name char(10) character set utf8mb4;
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章