ローカル環境(MAMP Ver.2.0.1)でMySQLの設定がおかしくて文字化けする…と思っていろいろ調べてた。
mysql> STATUS
か
mysql> show variables like 'character_set%';
で確認できる。
+--------------------------+--------------------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /Applications/MAMP/Library/share/charsets/ | +--------------------------+--------------------------------------------+ 8 rows in set (0.00 sec)
こんなのが出てきて…
latin1っておい!?
ってなったのが事の始まり。
latin1をutf8に変えることが今回の目標。
設定ファイル(my.cnf)を探す。
$ find /Application/MAMP/ -name "my.cnf"
無かった(´;ω;`)
ググると
MAMP/Library/share/mysql/
に
my-large.cnf my-midium.cnf my-small.cnf
があるらしく、これを元にmy.cnfを作るらしい。
意気揚々と
$ cd Library/share/my[tab][tab][tab]
とかやっても出て来ない…
そもそもmysqlファイルが無かった(´;ω;`)
$ find /Applications/MAMP/ -name "my-*.cnf"
めげずに検索したら出てきた。
.//Library/support-files/my-huge.cnf .//Library/support-files/my-innodb-heavy-4G.cnf .//Library/support-files/my-large.cnf .//Library/support-files/my-medium.cnf .//Library/support-files/my-small.cnf
あるじゃないですかっ!
大きいことはいいことだーとmy-large.cnfをコピー
$ cp /Applications/MAMP/Library/support-files/my-large.cnf /Applications/MAMP/db/mysql/my.cnf
my.cnfを編集して[client]と[mysqld]にそれぞれ下の項目を追加。
[client] default-character-set=utf8 [mysqld] default-character-set = utf8 skip-character-set-client-handshake character-set-server = utf8 collation-server = utf8_general_ci init-connect = SET NAMES utf8
mysqlを再起動!
+--------------------------+--------------------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /Applications/MAMP/Library/share/charsets/ | +--------------------------+--------------------------------------------+ 8 rows in set (0.00 sec)
(´;ω;`)ブワッ 設定反映されてないじゃん!!! またググる。
$ MAMP/Library/bin/mysql --help
してみると、
Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf /Applications/MAMP/conf/my.cnf ~/.my.cnf
ってところを読んでくれるらしい。(この動作を先にやるべきだった。
他に影響を与えたくないのでさっき作った/Applications/MAMP/conf/に移動。
再起動
起動しない\(^o^)/ どゆことー
エラーを見る。
$ cat /MAMP/logs/mysql_error_log.err
中には
120621 17:32:06 [ERROR] /Applications/MAMP/Library/bin/mysqld: unknown variable 'default-character-set=utf8' 120621 17:32:06 [ERROR] Aborting
こんなエラーが。そんな設定ねーよ!と怒られていた。
じゃあ消してやるよ!と
#default-character-set = utf8
再起動
起動したあああああああキタ━━━━(゚∀゚)━━━━!!
設定を確認
mysql> show variables like 'character_set%'; +--------------------------+--------------------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /Applications/MAMP/Library/share/charsets/ | +--------------------------+--------------------------------------------+ 8 rows in set (0.17 sec)
ウェーイ(リア充の真似。)ウフフ☆オッケー(ローラの真似。)
様々な罠にはまりながらも何とかなりました。
これは過程を全て追ってるけど、今度暇があったらちゃんと一発で行くような設定方法を書こうと思う。