1366, "Incorrect string value: '\\xF0\\x9F\\x87\\xA8\\xF0\\x9F...' for column 'nickName' at row 1"
问题描述:Python从百度地图抓取消息保存到MySQL数据中,对应数据库字段为varchar以及TEXT,字符编码utf-8。部分插入成功,部分插入失败,报错如下。
error:1366, “Incorrect string value: ‘\xF0\x9F\x98\x81’
是因为mysql不能识别4个字节的utf8编码的字符,抛出了异常,这应该也是问题的根源。☺、��、类似于这种4个字节,将对应字符类型换成将对应的数据类型改为utf8mb4类型,同时连接类型也要改成utf8mb4_general_ci
--如果不管用,可以重启mysql服务
--Python链接写字符集为utf8mb4或者不写
conn = pymysql.connect(host="localhost", user="adam",
passwd="XXX",
db=db_name
# ,charset='utf8mb4'
)
drop table comments;
CREATE TABLE `comments` (
`id` bigint(20) DEFAULT NULL,
`moveId` bigint(20) DEFAULT NULL,
`userId` bigint(20) DEFAULT NULL,
`nickName` varchar(50) CHARACTER SET utf8mb4 DEFAULT NULL,
`gender` int(11) DEFAULT NULL,
`score` int(11) DEFAULT NULL,
`content` varchar(2000) CHARACTER SET utf8mb4 DEFAULT NULL,
`cityName` varchar(200) CHARACTER SET utf8mb4 DEFAULT NULL,
`vipType` int(11) DEFAULT NULL,
`startTime` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
select * from comments;