EnsekiTT Blog

EnsekiTTが書くブログです。

MAMPのMySQLで文字コードを変えようとして色々詰まったところ

ローカル環境(MAMP Ver.2.0.1)でMySQLの設定がおかしくて文字化けする…と思っていろいろ調べてた。

まず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)

 

 

ウェーイ(リア充の真似。)ウフフ☆オッケー(ローラの真似。)

様々な罠にはまりながらも何とかなりました。

これは過程を全て追ってるけど、今度暇があったらちゃんと一発で行くような設定方法を書こうと思う。