InternalError Incorrect string value: '\\xF0\\x9F\\x91\\x87' for column 插入❤表情符号错误
原创
©著作权归作者所有:来自51CTO博客作者ch3nnn的原创作品,请联系作者获取转载授权,否则将追究法律责任
向数据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;