我有一个数据库,其中包含我在 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
。 - 删除并重新创建存储过程
没有成功!!! :-(
我在一个包含 Unicode 内容的临时表上执行了一个 insert
查询,它在没有警告的情况下工作了!!!
问题是什么?
我怎样才能解决这个问题?
谢谢
最佳答案
问题解决了!
我将 CHARACTER SET utf8
添加到存储过程的 VARCHAR 参数中并解决了问题:
..., IN `title` VARCHAR(255) CHARSET utf8,...
但是我想知道为什么在恢复数据库之前没有问题!!!???
关于python - python调用存储过程时字符串值不正确警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14884358/