違い
character_set_database と character_set_serverの違いは
- character_set_database
→データベースを選択した際に使われる文字コード
- character_set_server
→MySQLのデフォルトの文字コード
という違いらしい。
例えば、最初にMySQLにログインします。
この時点ではcharacter_set_serverの文字コードが使われます。
次に
use データベースA
という風に実行してデータベースAを選択すると、character_set_databaseで指定された文字コードにセットされます。
このとき、character_set_databaseが設定されていない場合はcharacter_set_serverの文字コードが使われます。
同じにしておいた方が良い
基本的にcharacter_set_databaseとcharacter_set_serverは同じ文字コードを指定しておいた方が良いっぽいです。
デフォルトではどちらもlatin1
という文字コードが設定されていますが、どう考えても時代に即していないので、どちらも
uf8
utf8mb4
のどちらかに統一しておいた方が良いと思います。(MySQLのuf8
は4バイトのUnicode文字に対応していないらしいので、utf8mb4
のほうがベターだと思います)
2つ存在する理由
正直、「なんで2つ必要なんだ?character_set_serverだけでよくね?」って気がするんだけど、なんでなんだろう。
同じMySQL内で
- データベースAは
UTF-8
にしたい - データベースBは
latin1
にしたい
みたいなときにcharacter_set_databaseを使って動的に文字コードを変更する・・・みたいなときに使うんだろうか。
よくわからんね・・。
コメント