やまだ系

コンピューターやWEB関連の情報収拾と整理、資格取得に関することを目的にしたブログ

MAMP導入忘却メモ2

MAMPでのデータベースの文字化け問題にぶち当たっていて解決方法を探る。
ページにはちゃんと表示されているのにphpMyAdminで確認すると日本語が文字化け;このままではデータのインポートなど出来ないのでネットで情報探すが知識が乏しいので解決できない。そこでクライアントとサーバーのキャラクターセットの確認が出来るSQLがあったのでphpMyAdminを開き、phpMyAdminSQlを走らせる

まず、自分の状態を知るための SQL
SHOW VARIABLES LIKE 'char%';

引用:MyNA Web Site
SQLタブを選んでSQL文を実行させ確認。

実行結果はこちら

Variable_name Value
character_set_client utf8
character_set_connection eucjpms
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/mysql/charsets/|

・・・これって

クライアントが latin1 で、サーバーが日本語の場合は、確実に文字が壊れる。

ってやつです。原因がここでハッキリとわかってめでたしめでたし。>解決しないと;;
mysqlの現状確認のためにターミナル起動しmysqlモニタに入ってみることを試みる

cd /Applications/MAMP/db/mysql/mysql

パスワード設定してあるので

mysql -u root -p

そして表示されたプロンプトにパスワードを入力したらちゃんと入れた。

mysql> status;

実行結果

Connection id: 17
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.0.19
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: ujis
Db characterset: ujis
Client characterset: ujis
Conn. characterset: ujis
UNIX socket: /Applications/MAMP/tmp/mysql/mysql.sock
Uptime: 22 min 28 sec

んで、もって次に確認

show variables like "char%";

結果

Variable_name Value
character_set_client ujis
character_set_connection ujis
character_set_database ujis
character_set_filesystem binary
character_set_results ujis
character_set_server ujis
character_set_system utf8
character_sets_dir

/Applications/MAMP/Library/share/mysql/charsets/|

あってるじゃん!!
/Applications/MAMP/db/mysql/mysql/my.cnfをちゃんと読んでます。以下my.cnfの内容

# サーバ設定
[mysqld]
default-character-set=ujis
skip-character-set-client-handshake

# クライアントアプリ (Perl,PHP,etc) 使用時設定
# 注 : ここで設定した上でさらにアプリ側での設定追記も必要 (例) Perl DBI
# mysql, mysqldump等 (shell client) に対してもここでの設定は有効
[client]
default-character-set=ujis

# mysql (標準client) 使用時設定
# mysql (標準client) に対して [client] での設定を上書き
[mysql]
default-character-set=ujis

# mysqldump 使用時設定
# mysqldump に対して [client] での設定を上書き
[mysqldump] 
default-character-set=ujis

ってことは・・・phpMyAdminが問題かもしれない>原因究明続行
ちなみにmy.cnf設定を無しに素のmysqlのshow variables like "char%";での実行結果は

Variable_name Value
character_set_client latin1
character_set_connection latin1
character_set_database latin1
character_set_filesystem binary
character_set_results latin1
character_set_server latin1
character_set_system utf8
character_sets_dir

/Applications/MAMP/Library/share/mysql/charsets/|

PHP4ではmy.cnfの設定が反映されてないって言うか・・なんていうか(混沌)まだまだ悩みは続く