Skip to content

Instantly share code, notes, and snippets.

@takenoco82
Created November 17, 2018 07:43
Show Gist options
  • Save takenoco82/133b97c7f9b5f7333a1a8527b78468cf to your computer and use it in GitHub Desktop.
Save takenoco82/133b97c7f9b5f7333a1a8527b78468cf to your computer and use it in GitHub Desktop.
MySQLの文字コードを確認・設定する

MySQLの文字コードを確認・設定する

現在の設定を確認する

mysql> SHOW VARIABLES LIKE '%char%';
+--------------------------+--------------------------------+
| Variable_name            | Value                          |
+--------------------------+--------------------------------+
| character_set_client     | latin1                         |
| character_set_connection | latin1                         |
| character_set_database   | utf8mb4                        |
| character_set_filesystem | binary                         |
| character_set_results    | latin1                         |
| character_set_server     | utf8mb4                        |
| character_set_system     | utf8                           |
| character_sets_dir       | /usr/share/mysql-8.0/charsets/ |
+--------------------------+--------------------------------+
8 rows in set (0.05 sec)

各項目の説明

項目 client/server 説明
character_set_client client クライアントがサーバにクエリを送信する際に使用
character_set_connection client クライアントが送ったクエリをサーバが解析する際に使用
character_set_database server サーバのデフォルトキャラクタセット。LOAD DATA INFILE文はこの指定が使用される。 mysql起動時にcharacter_set_serverの値が適用される。
character_set_filesystem
character_set_results server サーバがクライアントにクエリ結果を送る時に使用
character_set_server server サービス起動時のデフォルトキャラクタセット
character_set_system ファイル名をこのキャラクタセットで扱う
character_sets_dir キャラクタセットを扱う上で必須となるファイルを配置しているディレクトリ

設定を変更する

基本的に character_set_filesystem, character_sets_dir 以外を utf8 にしておけばOK。

設定ファイルを変更する

以下のように my.conf がインクルードできるようになっていれば、以下のファイルを作成する

less /etc/mysql/my.cnf
# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
#
...
# Custom config should go here
!includedir /etc/mysql/conf.d/
# ここでは encoding.cnf だけどファイル名は何でもOK
vi /etc/mysql/conf.d/encoding.cnf
# /etc/mysql/conf.d/encoding.cnf
[mysqld]
default-character-set = utf8
[client]
default-character-set = utf8

mysqlを再起動する

Dockerを使っているなら、ボリュームを指定してやる。

参考

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment