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;
 

 

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