解决MySQL插入数据时出现的"Incorrect string value"错误
解决MySQL插入数据时出现的"Incorrect string value"错误
在使用MySQL数据库时,经常会遇到插入数据时出现"Incorrect string value: '\xE5\xAD\xA6\xE6\xA0\xA1...' for column '标题' at row 1"这样的错误。这个错误是由于在插入数据时,数据中包含非ASCII字符,而数据库的字符集不支持这些字符导致的。
解决方案
要解决这个问题,可以尝试以下几种方法:
1. 检查数据库的字符集设置
可以使用如下命令查看当前数据库的字符集设置:
SHOW VARIABLES LIKE 'character_set_database';如果字符集不正确,可以使用如下命令修改字符集设置:
ALTER DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;2. 连接数据库时指定字符集
可以在连接数据库时,添加`charset='utf8mb4'`参数来指定字符集,例如:
conn = pymysql.connect(host='localhost', user='your_user', password='your_password', db='your_database', charset='utf8mb4')3. 对非ASCII字符进行编码转换
对于非ASCII字符,可以尝试使用适当的编码方式进行转换。例如,可以使用`encode('utf-8')`对字符串进行编码,然后再插入到数据库中:
cur.executemany("insert into test3(`序号`, `链接`, `标题`, `时间`) values(%s, %s, %s, %s)", (i[0], i[1], i[2].encode('utf-8'), i[3]))请注意,如果使用第3种方法进行编码转换,读取数据时也需要进行相应的解码操作。
希望以上解决方案能够帮助您解决问题。
原文地址: https://www.cveoy.top/t/topic/pBjD 著作权归作者所有。请勿转载和采集!