MySQLで日本語を含むINSERT文を発行しようとしたらエラー
OracleのサイトからMac用のdmgファイルをダウンロードし,MySQLをインストール.
そこからMySQL Workbenchにlocalhostに接続し,スキーマ,テーブルを作成.
ここまでは良かったが、適当に作った日本語を含むテストデータをINSERTしようとしたら下記エラーが発生した.
ERROR 1366: 1366: Incorrect string value: '\xE3\x82\xA4\xE3\x83\x84...' for column 'name' at row 1
調べてみると,文字コードのエラーっぽいので,MySQLで使われている文字コードを調べる.
show variables like "chara%";
utf8やらlatain1とかっていう文字コードが混ざっているが,極端な話,character_set_filesystem,character_sets?dir以外をutf8にすればいいらしい.
そのためにはMySQLの設定ファイル/etc/my,cnfに文字コードを設定するための情報を書き込む作業が必要とのことだが,/etcにそんなファイルそもそもない.実は,/usr/local/mysql/support-files/にmy-medium.cnfってファイルがあるので,それを/etcにコピってmy.cnfにすればいいとのこと.
そこに
[client]
default-character-set = utf8
[mysqld]
character-set-server = utf8
を追記.このままだとエラーが出るそうなので,chmod 600 my.cnf でパーミッションを変更.
一度作ったTBLに対しては,最初の文字コードが適用されるそうなので,新しく作り直し.再度同じINSERT文を発行したら,問題は解決した.
おしまい