MySQLで文字コードを直す時のmy.cnfの書き方
確認方法
show variables like 'chara%';
これで、今現在の文字コードがどうなっているか確認できる。
文字コードは、サーバー、データベース、カラムといったそれぞれの単位で設定できる。
デフォルトの文字コードを変える場合、 /etc/my.cnf
に設定を書き込むことで、mysql全体の設定を指定することができる。
この時、設定に書いた一文はこんな感じ。
character-set-database = utf8mb4
この時、少なくとも、 _
(アンダースコア)は、ダメっぽかったので、 -
(ハイフン)に変えておいた。
ただ、この時の書き方がうまくいかないと、設定書き込み後にmysqlを再起動しようとした時にエラーが出てしまう。
エラー内容は、 /var/log/mysqld.log
に書き込まれる。
中を確認すると、
[ERROR] unknown variable 'character-set-database=utf8mb4'
こんな感じのエラーが出ていた。
show variables like 'chara%';
で表示される書き方と同じように書いちゃダメなようですね。
書き方は、
[mysqld] character-set-server=utf8 [mysql] default-character-set=utf8
だそうです。
その他、ちゃんと入れておいたほうがいいらしいmy.cnfの設定
default_password_lifetime = 0 # Time zone log-timestamps = system # TIMESTAMP explicit_defaults_for_timestamp = true
timestampについては、ちょっとあまり理解できていないのだが、 updated_at
とか、 created_at
といった、自動でtimestampを入れてくれるようなカラムを用意している場合に、入れておかないと、Laraveのマイグレーション実行コマンド php artisan migrate
をやった時に、エラーがでまくりました。
エラー文言に、 timestampを入れるカラム名が入ってくる場合、気をつけたほうが良さそうです。
なにやら、Mysqlのディストリビューションでは、5.6か5.7あたりから新しく設定に書き込まないと動かない、という項目になってきているようで、頭の片隅においておく必要がありそうです。
参考記事:
fedora15 mysql5.5 default-character-setが原因で起動できない - ITとともに生きよう