DjangoでMySQLに絵文字を保存

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

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

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

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

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

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

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする