DjangoでMySQLに絵文字を保存

スポンサーリンク

Twitter関連のプログラムを書いていたのですが、絵文字を含むツイートをDBに保存しようとするとエラーがでました。
調べてみると、MySQLのutf8は貧弱なもので、4バイトの絵文字を扱うにはMySQL 5.5から追加されたutf8mb4というcharacter setを使わなくてはならないようです。

参考:blog.k11i.biz: UTF-8 エンコードされた絵文字を MySQL / JDBC で取り扱うには?

とりあえずMySQLをアップデートして既存テーブルを

ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8mb4;

でutf8mb4に変えた後、改めてDjangoから絵文字含む文字列を保存しようとしたところ、

django.db.utils.OperationalError: (2019, "Can't initialize character set utf8mb4
 (path: /usr/share/mysql/charsets/)")

というエラーが。
MySQL-pythonパッケージがMySQLの共有ライブラリを使用しているので、再インストール(再コンパイル)しなきゃいけなかったようです。
再インストールしたら無事に絵文字含む文字列を保存することができました。

[追記 2015/08/12]
上記のエラーがまた再発したのですが、データベースAPIをMySQL-Pythonからmysqlclientに変えたら治りました。

スポンサーリンク
スポンサーリンク
Python
フォローする
Akashic Records

コメント

タイトルとURLをコピーしました