python插入数据到mysql时报错:mysql_exceptions.OperationalError: 1366 Incorrect string value

发布时间:2020-04-18编辑:脚本学堂
本文介绍下,在用python将数据插入到mysql时,出现:mysql_exceptions.OperationalError: 1366 Incorrect string value错误提示的解决方法,有需要的朋友参考下。

pythonmysql中插入数据时,报如下的错误:
 

mysql_exceptions.OperationalError: (1366, "Incorrect string value: 'xE4xB8 ......' for column 'pageSnapshot' at row 1")的异常
  File "E:/outofmemory/svn/web/models/minipage/__init__.py", line 356, in addPageVersion
    newVersionId = db.insert(self.table_src_page_version,**pageVersion)
  File "C:Python27libsite-packagesweb.py-0.36-py2.7.eggwebdb.py", line 774, in insert
    self._db_execute(db_cursor, q1)
  File "C:Python27libsite-packagesweb.py-0.36-py2.7.eggwebdb.py", line 587, in _db_execute
    out = cur.execute(query, params)
  File "C:Python27libsite-packagesMySQLdbcursors.py", line 174, in execute
    self.errorhandler(self, exc, value)
  File "C:Python27libsite-packagesMySQLdbconnections.py", line 36, in defaulterrorhandler
    raise errorclass, errorvalue
_mysql_exceptions.OperationalError: (1366, "Incorrect string value: 'xE4xB8 ......' for column 'pageSnapshot' at row 1")

问题分析:
此异常是mysql问题,而非python的问题,因类mysql的字段类型是utf-xxx, 而在mysql中这些utf-8数据类型只能存储最多三个字节的字符,而存不了包含四个字节的字符。

解决方法:
方法1,修改mysql数据表的字段类型为utf8mb4,注意,此类型只在mysql 5.5之后被支持。
方法2,删除4字节的utf8字符,然后再保存。