下記の設定で文字化けは解消されたのですが、いまいち理解ができませんでした。(;£;)
概要
たいていターミナルからMySQLを覗きますと、文字化けをしています。なので、その辺を勉強したいと思いました。
環境としては、Macで。Vagrantの中のMySQLです。
MySQLの中で調べる。
Vagrant内でMySQLにログインしまして、showなんちゃらと打ちます。
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 | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
最初はこんな風になっております。あー。ほとんどlatin1だよ。なんだよlatin1って。
そして、いろなところに書いてある情報をもとに、「/var/my.cnf」を弄って、なんとかしようと思いました。
my.cnfの設定
まずは、以下のように、一箇所だけ追加してみます。
/etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
# この下が追加部分
[client]
default-character-set = utf8
そうすると、次のようになりました。
mysql> show variables like '%char%';
+--------------------------+----------------------------+
| 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 | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
次の2つは変更されませんでした。
- character_set_database
- character_set_server
実は、この状態でターミナルからの文字化けは、僕の環境では文字化けは解消されました。
めでたし、めでたし。
でも全然「めでたし、めでたし」じゃない。
- 何をやってもdatabaseとserverは変わらない。(*)
- global variableってなに?
- そもそも、これらの変数がどこに作用しているのか不明。
という状態ですので、全体的に悲しい気持ちでございます。
(*)これは、例えば以下のような記述です。
/etc/my.cnf
[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]
default-character-set = utf8
[mysqldump]
default-character-set = utf8
どなたかご助言など、頂けますと本当に嬉しいです。
宜しくお願い致します。ありがとうございました。引き続き勉強します。