DjangoでMySQLに絵文字を保存

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

Pocket

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

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

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

記事を読む

no image

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

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

記事を読む

no image

Django 1.7の新機能Migrations

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

記事を読む

no image

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

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

記事を読む

no image

PySideインストール後にImportError

QtのPythonバインディングにはPyQtとPySideがあって、元々あったのはGPLのPyQtだ

記事を読む

no image

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

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

記事を読む

no image

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

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

記事を読む

no image

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

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

記事を読む

no image

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

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

記事を読む

no image

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

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

記事を読む

Message

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

no image
Google Play Musicアプリの音楽ライブラリから特定のフォルダを除外する方法

Google Play Musicアプリはデフォルトでローカル端末上の

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で現在

→もっと見る

PAGE TOP ↑