4

Pythonスクリプトで呼び出すストアドプロシージャを持つデータベースがあります。
昨日までは問題ありませんでした。
しかし昨日、データベース サーバーに問題が発生し、データベースを復元しました。
今、私は同じコードからこの警告を受けています:

Warning: Incorrect string value: '\xD9\x88\xD8\xB2\xDB\x8C...' for column 'title' at row 1

DB でいくつかのエンコーディングを確認しました :
In 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はユニコードです。

私は試した:

  • utf8_general_ciテーブルの変更とtitle列の再設定
  • SET NAMES utf8 プロシージャ を呼び出す前に呼び出します。
  • ストアド プロシージャの削除と再作成

どれもうまくいきませんでした!!! :-(


insertUnicode コンテンツを含む一時テーブルでクエリ を実行しましたが、その警告なしで機能しました!!!


何が問題ですか?
どうすればこれを修正できますか?

ありがとう

4

1 に答える 1

10

問題が解決しました!
ストアド プロシージャの VARCHAR 引数に追加 CHARACTER SET utf8し、問題を解決し ました。

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

それにしても、なぜDB復旧前は問題なかったのだろう!!!!?

于 2013-02-14T22:04:41.637 に答える