python - python调用存储过程时字符串值不正确警告

标签 python mysql stored-procedures utf-8 mysql-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
  • 删除并重新创建存储过程

没有成功!!! :-(


我在一个包含 Unicode 内容的临时表上执行了一个 insert 查询,它在没有警告的情况下工作了!!!


问题是什么?
我怎样才能解决这个问题?

谢谢

最佳答案

问题解决了!
我将 CHARACTER SET utf8 添加到存储过程的 VARCHAR 参数中并解决了问题:

..., IN `title` VARCHAR(255) CHARSET utf8,...

但是我想知道为什么在恢复数据库之前没有问题!!!???

关于python - python调用存储过程时字符串值不正确警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14884358/

相关文章:

python - sqlalchemy 在删除之前更新另一个模型

mysql 按 : Slow query 分组

mysql - 无法添加或更新子行 : a foreign key constraint fails CONSTRAINT `PageChild_Page_Id_fk` FOREIGN KEY (`PageId` ) REFERENCES `Page` (`Id` )

mysql - asp.net 中带有文本和图像的自动完成文本框

sql - 如何获取存储过程中引用的所有列的列表?

python - Pony ORM - 按特定顺序排序

python - 刮痧确实有美汤

python - 如何在只有 1 个中心节点的森伯斯特图中正确使用 'percentParent'?

python - 从 pyodbc 调用过程时出错

MySQL存储过程优化