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

时间:2013-02-14 21:28:17

标签: 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

我检查了DB中的一些编码:
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。

我试过了:

  • 更改表并重新设置utf8_general_ci
  • title
  • 在调用程序之前调用SET NAMES utf8
  • 删除并重新创建存储过程

没有工作!!! :-(


我在一个带有Unicode内容的临时表上执行了insert查询,它没有发出警告就行了!


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

由于

1 个答案:

答案 0 :(得分:8)

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

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

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