DjangoでMySQLに絵文字を保存

公開日: : 最終更新日:2015/08/12 Python , ,


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に変えたら治りました。

関連記事

no image

Djangoのタイムゾーンサポートについて調べた

Djangoの1.4以降で追加されたタイムゾーンサポートのことがよくわかってなかったのでドキュメント

記事を読む

no image

python-twitterで複数media(画像)を扱う

現時点で、python-twitterをpipで入れると2.0が入りますが、extended ent

記事を読む

no image

pipでThe C extension could not be compiledとかいうWARNING

CentOS 6.5にpipでpython-twitterを入れようとしたら、依存パッケージのsim

記事を読む

no image

Djangoのカスタムコマンドをコード内から呼ぶ

ドキュメントにまんま書いてあるけど一応メモ。 カスタムコマンド内から他のコマンドを呼び出したい

記事を読む

no image

Python、DjangoでTwitter認証(Sign in with Twitter)するサンプル

トップページから認証リンクを押すとサインインを求められ、ユーザーのアクセストークンをDBに保存して何

記事を読む

no image

Django 1.5でDEBUG=Falseにしたら動かないとかstaticが出ないとか

Django 1.5でプロジェクト作って少しして試しにDEBUG=Falseにしてみたら「Serve

記事を読む

no image

python-twitterでツイート時刻(created_at)からローカルのdatetimeを作成する

python-twitterのStatusクラスからの投稿時刻の取り方には二通りあり、それぞれUTC

記事を読む

no image

PythonでC++のstd::mapみたいな挙動が欲しい

最近競技プログラミングの問題をちょろちょろやってて、それでC++を使ってるんですが、C++のstd:

記事を読む

no image

Django 1.7の新機能Migrations

Django 1.6まででは作成後のモデルに変更を加える場合、手動でSQLを発行するかsouthのよ

記事を読む

no image

Djangoでreverse後のURLにスクリプト名が入ってしまう

レンタルサーバー上にCGIとしてDjangoを動かそうとしていて、このチケットのdjango.cgi

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

no image
PythonでC++のstd::mapみたいな挙動が欲しい

最近競技プログラミングの問題をちょろちょろやってて、それでC++を使っ

no image
ファイルパーミッションを664から644に変えてもGitで反映されない

って思ったらGitのこと勘違いしてたっていうメモ。 Gitはファイル

no image
CentOS6.9を7.3にアップグレード

CentOS6系から7系へのアップグレードはアップグレードツールが存在

no image
ブラウザにフォームの値を覚えさせない

formのinputやselectにvalueやselectedで現在

no image
[WordPress]dbDelta()でテーブルが作成できない

WordPressのプラグインの勉強をしていて、テーブルを作成するため

→もっと見る

PAGE TOP ↑