読者です 読者をやめる 読者になる 読者になる

さば

ここから何かを伝えようとは思っていない

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文を発行したら,問題は解決した.


おしまい