41
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

character_set_databaseとcharacter_set_serverの違いを知りたくて

Last updated at Posted at 2016-02-24

mysqlの設定は、環境つくるときにちょいちょいやるのですが、いつもなんとなく文字コードの設定はやっておりました。

もう、なんとなくやるのは嫌だ!と思って深追いしたメモです。

まず違いがわかってない

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/ |
+--------------------------+----------------------------+

こうなってたときに、よし、

  • character_set_database
  • character_set_server

をutf8に変更しようっとなります。

でも、そもそも、この違いがわからなくて調べました。

ここにありました。
http://dev.mysql.com/doc/refman/5.6/ja/server-system-variables.html#sysvar_character_set_server

character_set_database
デフォルトデータベースで使用される文字セット。デフォルトのデータベースが変更されるたびに、サーバーはこの変数を設定します。デフォルトデータベースが存在しない場合、変数は character_set_server と同じ値になります。

やばい、デフォルトデータベース..ってなんだよ。となりましたが、これは、USEで選択されているデータベースを指すようです。

character_set_server
サーバーのデフォルト文字セット。

なるほどー。。。

わかった気がするんですけど、うまく言語化できないのですが、とにかく

  • character_set_server

をちゃんと設定すればよいということです。

(すでに文字化けを起こしちゃっている場合は、character_set_databaseがlatin1とかになっていたりします。その場合はcharacter_set_serverをutf8にしたところで手遅れで、character_set_databaseを修正する必要があるのでdatabase作り直しとかだと思います。)

なので、やることは[mysqld]に追記

my.cnf
[mysqld]
character-set-server = utf8

とすれば、上の2つのlatin1は消えてutf8になります。

[mysqld]ってなんだよ、って気持ちにはなりますので、この辺をみておきます。
https://dev.mysql.com/doc/refman/5.6/ja/option-files.html

以上です。
my.cnfの全容は分かっておりませんが、少しだけ仲良くなれた気がします。

41
28
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
41
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?