超絶ド初心者のため発信する知識などほとんど持ち合わせてないんですが、MYSQLの文字化けで丸2日かかったのでwindowsユーザーの初心者の皆さんにも有用かなと思い初投稿してみます。
my.iniとmy.cnfの混同でハマる
my.cnfをあれしろこうしろと言われてもそんなファイル無い・・・(T_T)
http://www.pasokuma.net/server/db/mysql/mycnf.html
↑↑↑↑
「my.iniはwindows用、my.cnfはwindows以外のOS用の設定ファイルです。 ちなみにwindowsでもmy.cnfを使用しますが、これはmy.iniがどこにあるかを書くだけです。」だそうです。
xammpなどもインストールする環境によってファイルの名前や置き場が変わったりするみたいなので気を付けないといけませんね。
my.iniの項目をutf8にしてハマる
>show variables like ‘char%’;
をコマンドプロンプトに入力すると
+--------------------------+--------------------------------+
| Variable_name | Value |
+--------------------------+--------------------------------+
| character_set_client | cp932 |
| character_set_connection | cp932 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
|
|
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | C:\xampp\mysql\share\charsets\ |
+--------------------------+--------------------------------+
デフォルトではcp932とutf8の部分がlatin(だったかな?)になってるらしいですが、 character_set_client、 character_set_connection、character_set_resultsをutf8にしなくちゃいけない、と・・・
そのためにmy.iniを
[client]
default-character-set = utf8
[mysqld]
skip-character-set-client-handshake
default-character-set = utf8
character-set-server = utf8
[mysqldump]
default-character-set = utf8
[mysql]
default-character-set = utf8
をこうしろと・・・
でもwindowsではコマンドプロンプトでutf8が使用できないため
character_set_client | cp932
character_set_connection | cp932
character_set_results | cp932
でいいみたい。
あんまり環境とか意識したことなかったけど環境気を付けないとだめですね。
skip-character-set-client-handshakeのコメントアウトをはずしててハマる
これをやったことを忘れて延々と調べる調べる・・・ワカラナイ(;´Д`)
http://www.cyberarchitect.net/blog/archives/2193
結局こちらであれ?となって解決 アプリ開発の道のりは遠そうです^^;
ちなみに
http://blog.everqueue.com/chiba/2009/08/27/291/
↑↑↑↑↑
「skip-character-set-client-handshakeを薦める文書がネット上にはやたら転がってるんだけど、これには大きな落とし穴がある。」そうです。