今天在用Python执行一个插入中文字段到数据库(MySQL)中的时候,报了一个错误。
sqlalchemy.exc.DatabaseError: (mysql.connector.errors.DatabaseError) 1366 (HY000): Incorrect string '\xD0\x92\xD0\xB0\xD0\xBB...'
我检查一下我的数据库,字符编码是utf-8没错。又检查了一下代码,是把unicode的字符串转为utf-8也没错。
在网上查了好久,发现了解决方法https://*.com/questions/2108824/mysql-incorrect-string-value-error-when-save-unicode-string-in-django。
原来,虽然我的MySQL建的数据库虽然编码是utf-8,但是我的字段那一列不一定是utf-8(什么鬼?!),解决方法如下:
改变特定列的编码为utf8:
ALTER TABLE database.table MODIFY COLUMN col VARCHAR(255)
CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;
对MySQL了解比较少,具体为啥我还是不太明白,不过确实是可行,看来以后插入字段还要检查一下列的编码。