リビジョン4724以降でのMySQLについて

79 views
Skip to first unread message

Masahiro Yamagishi

unread,
Mar 18, 2007, 1:48:42 AM3/18/07
to django-ja
初めまして、やまぎしと申します。

リビジョン 4723 までは、django/db/backends/mysql/base.py の中で、下記よ
うに接
続のキャラクタセットの設定が行われていたのですが、リビジョン 4724 で無く
なって
しまっているようです。無くなった理由をご存じの方はいらっしゃらないでしょ
うか?

if self.connection.get_server_info() >= '4.1':
cursor.execute("SET NAMES 'utf8'")

キャラクタセットの設定が無くなったために、データベースに格納されるデータ
が文字
化けするようになっています。

リビジョン 4724 以降に django で INSERT したデータに関しては、django で
扱う限
りは文字化けは起こらないのですが、リビジョン 4723 以前に INSERT を行った
データ
は、djangoでは、文字化けが起こるようになっています。

設定が悪いようでしたら、正しい設定を教えていただけると有り難いです。

tsuyuki makoto

unread,
Mar 18, 2007, 5:29:58 AM3/18/07
to djan...@googlegroups.com
露木です。
これはかなり重要な変更ですね(当然怒っている人もいる模様)。
svn upする前に情報をいただけて助かりました:)

4724で以下の設定に変わったようです(動作未確認)。
DATABASE_OPTIONS = dict(charset="utf8")

詳しくは該当チケットを参照してください。
http://code.djangoproject.com/ticket/2635

この辺も重要ですね。
http://michilu.com/django/doc-ja/databases/


07/03/18 に Masahiro Yamagishi<ficti...@gmail.com> さんは書きました:

Masahiro Yamagishi

unread,
Mar 18, 2007, 7:51:19 AM3/18/07
to djan...@googlegroups.com
やまぎしです。

ポインタありがとうございます。

> DATABASE_OPTIONS = dict(charset="utf8")

で上手くいきそうだったのですが、

・MySQLdb 1.2.1がデフォルトのcharacter-setがcharsetと同じだとSET NAMESしない
・SET NAMESを必ず実行しないと文字化けする(原因不明PHPなどでも発生)
・デフォルトのcharacter-setは、utf8に指定してある

上の三つの事が重なって上手くいかなかったので、

DATABASE_OPTIONS = dict(init_command="SET NAMES 'utf8'")

を設定したら、以前と同じように文字化けしなくなりました =)

Reply all
Reply to author
Forward
0 new messages