ValueError: unsupported format character ‘Y’ (0x59) at index 51

MySQL+Pythonのエラー

このようなエラーが出るときの対応。

これだと上記エラーが発生します。

ここに解決策が載っていました。

ポイントはsql文の文字列をformat()するだけ

load data local infile で文字化け対応

MySQLのload data local infileの際に文字化けする対策
ポイントはcharacter_set_databaseパラメタを確認することでした

環境

  • MySQL 5.5.43
  • 文字コード utf8

テーブル作成

まずはUTF8でテーブルを作成します。なおデータベースエンジンにはInnodbを使用します

ファイルの確認

インポートするファイルの文字コードをUTF8にします

UTF8でない場合には以下のコマンドで変換します

データベースの設定

データベースの設定を確認します。なおmysqlコマンド起動時に –local-infile をつけないとload data local infileコマンドがエラーになります。5.5あたりからの仕様変更でしたっけ?

一時的に変更したい場合にはこちらのコマンドです。このセッションのみで有効です

インポート

それではインポートします

これで文字化けせずインポートできます

load data local infile時にMySQLで文字化けしてしまう

ちょっとハマったのでメモ

  • MySQL5.1.71
  • CentOS 5.2

MySQLでSjisファイルをロードするときに文字化けしてしまう

悩みました

どうやらDBの設定がおかしかったようです

これを変更するにはmy.cnfに設定し再起動すればOKです

グローバル変数もこうなります

ruby-mysqlで文字コード指定

rubyでMYSQLにつなぐ際にMySQL/Rubyを使っていたのですが、どうやら開発が止まってしまったらしくruby1.9には非対応とのこと

https://github.com/tmtm/ruby-mysql

こちらからruby-mysqlなるものをダウンロード。

ちなみにプロキシ越しのgemではうまくいきませんでした

とりあえずインストール

  • 日本語

mysqlにはSjisでデータが入っており、クライアントがutf-8の場合には以下のように書く必要があります