在Python调用存储过程时出现错误的字符串值警告
我有一个数据库,里面有一个存储过程,我在我的Python脚本中调用它。
直到昨天,一切都没有问题。
但是昨天我的数据库服务器出了点问题,数据库被恢复了。
现在我在用同样的代码时收到了这个警告:
Warning: Incorrect string value: '\xD9\x88\xD8\xB2\xDB\x8C...' for column 'title' at row 1
我检查了一些数据库中的编码:
在 INFORMATION_SCHEMA.COLUMNS
中:
+--------------+--------------------+
| COLUMN_NAME | CHARACTER_SET_NAME |
+--------------+--------------------+
| title | utf8 |
+--------------+--------------------+
数据库排序规则: latin1_swedish_ci
表排序规则: utf8_general_ci
列排序规则: utf8_general_ci
服务器字符集: UTF-8 Unicode (utf8)
(这些都和之前一样!!)
我用这个连接数据库:
self.con=mdb.connect(host=self.host, user=self.user, passwd=self.passwd, db=self.dbname,use_unicode=True, charset="utf8");
而变量 title
是Unicode格式的。
我尝试了:
- 修改表格,重新设置
title
列为utf8_general_ci
- 在调用存储过程之前执行
SET NAMES utf8
- 删除并重新创建存储过程
但都没有用!!! :-(
我在一个临时表上执行了一个 insert
查询,内容是Unicode格式的,结果没有出现那个警告!!!
那到底是什么问题呢?
我该怎么解决这个问题?
谢谢
1 个回答
10
问题解决了!
我在我的存储过程的VARCHAR参数中添加了 CHARACTER SET utf8
,问题就解决了:
..., IN `title` VARCHAR(255) CHARSET utf8,...
不过我还是想知道,为什么在恢复数据库之前没有问题呢!!!?