DB 日本語対応
データベースに日本語のデータを入れようとしたら、 打っても消えてしまってデータを挿入できなかった。。。
show variables like "chara%";
で、設定を見たら
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
とでてきたので、utf8に変更したらいいのかなと思い、
調べてみたら、my.cnfをいじればいい的なこと書いてあった。
とりあえすmy.cnfはなさげだったので、/ectにmy.cnfを作って、
my.cnfの中を変更するために、
sudo vi my.cnf
(↑sudoがないとうまく保存できなくなる)
[client] default-character-set=utf8 [mysqld] character-set-server=utf8 [mysqldump] default-character-set=utf8 [mysql] default-character-set=utf8
を追加。(/usr/local/mysql/support-files/my-medium.cnfっていうファイルが本当は入っていて
その中身をコピペするらしいが、存在しなかったので、無視した。)
しかし、変化なし!
再起動してみようとしたら、
mysql.server start
ERROR! The server quit without updating PID file (/usr/local/var/mysql/~.local.pid).
と、エラー。
解決方法
(projectFile)/infra/docker/mariadb/conf.d/server.cnfの中を、
[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] datadir=/var/lib/mysql skip-character-set-client-handshake character-set-server=utf8 character-set-client=utf8 init-connect = SET NAMES utf8
に変更!
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/ |
+--------------------------+----------------------------+
問題解決。