バンコク開発日誌

タイからは帰ってきたのにこのタイトル

MySQLで日本語を使用可能にする(Cloud9)

前回PHPでDBにデータを入力することができましたが、日本語が文字化けしていました。
f:id:trinine:20160203184841p:plain

今回はCloud9のMySQLデータベースで日本語を使えるようにしてみます。参考にしたのは下記。
qiita.com
詳しい人はこの記事で終了です、よく分からない人は一緒にやりましょう。
まずは現在の文字コードを確認、Cloud9のterminalからMySQLを起動して、

mysql> show variables like "chara%";
+--------------------------+----------------------------+
| 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/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)

"latin1"となっているところが文字化けの原因らしく、"UTF-8"に変更するのが次からの作業です。
MySQLを一旦終了して、terminalに戻ります。

$ cd etc/mysql
$ vi my.cnf

/etc/mysql/に移動し、MySQLの設定ファイルをviで開きます。
上記の記事通り2か所にUTF-8の設定を追記します。

[mysqld]
...
character-set-server=utf8 #mysqldセクションの末尾に追加

[client]  
default-character-set=utf8 #clientセクションを追加

最初は通常のテキストエディタに操作が近そうだったnanoで編集しようとしたんですが、Cloud9のIDEと相性が悪いっぽく断念。
初めてのviエディタでした。参考にしたのは以下。

viエディタの使い方
dev.koba206.com

2つ目の記事はなんかきちんと権限持って編集する必要があったみたいで、暫定措置で助かりました。
ここらへんもちゃんと勉強しないと。

cnfファイルを保存したらMySQLをリスタート。

$ mysql-ctl restart

再びMySQLを起動して、文字コードを確認します。

mysql> show variables like "chara%";
+--------------------------+----------------------------+
| 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       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

"UTF-8"になってます。
試しに適当に日本語を突っ込んでみます。

mysql> REPLACE INTO il_service.main (id,word) VALUES (100,'あああ');
Query OK, 1 row affected, 4 warnings (0.01 sec)

確認すると、

|  100 |     | ???              |

あれ?
???になったぞ。これ出来てるのかな?
調査して追記します。