RYN*_*RYN 4 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
Run Code Online (Sandbox Code Playgroud)
我检查了DB中的一些编码:
In INFORMATION_SCHEMA.COLUMNS:
+--------------+--------------------+
| COLUMN_NAME | CHARACTER_SET_NAME |
+--------------+--------------------+
| title | utf8 |
+--------------+--------------------+
Run Code Online (Sandbox Code Playgroud)
数据库排序规则: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");
Run Code Online (Sandbox Code Playgroud)
和变量title是unicode.
我试过了:
utf8_general_ci为title列SET NAMES utf8 调用程序之前. 没有工作!!! :-(
我insert在一个带有Unicode内容的临时表上执行了一个查询,它没有那个警告!
问题是什么?
我怎样才能解决这个问题?
谢谢
问题解决了!
我添加 CHARACTER SET utf8到我的存储过程的VARCHAR参数并解决了问题:
..., IN `title` VARCHAR(255) CHARSET utf8,...
Run Code Online (Sandbox Code Playgroud)
但我想知道为什么在恢复DB之前没有问题!!! ???