環境
DB : Mysql5.7
PC : windows10
試したこと
さまざまな記事で書いてあるような設定ファイルであるmy.iniを編集して文字コードを設定していました。
でも、なかなか設定が反映されなかったのでメモ。
結論
まずは結論、MySQLで読み込まれる設定ファイルではなかったから。
いろいろな記事で書いてあるような(?)
C:\ProgramData\MySQL\MySQL Server 5.7\my.ini をいくら編集してもそもそも読み込まれない設定ファイルだから文字コードは反映されない。
C:\Program Files\MySQL\MySQL Server 5.7\my.ini ← こっちにファイルを置いて、編集すると設定が反映される。
デフォルト
現在登録されている文字コードを見るのは
SHOW VARIABLES LIKE '%char%';
このとき使われてるVARIABELSは、システム変数です。
SHOW VARIABLES;
今回は、
character_set_client,character_set_connection,character_set_results をUTF8に変更したいと思います。
mysql> SHOW VARIABLES LIKE '%char%';
+--------------------------+---------------------------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------------------------+
| character_set_client | cp932 |
| character_set_connection | cp932 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | cp932 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\ |
+--------------------------+---------------------------------------------------------+
どこのファイルが読み込まれているのかチェック
まずは、MySQLでどの設定ファイルが読み込まれているのか確認します。
- コマンドプロンプトもしくはPowerShellからMySQLにログイン
起動後、下記のコマンドを入力
mysql> mysql --help
2. この時表示されるこの項目をチェック
Default options are read from the following files in the given order:
C:\WINDOWS\my.ini
C:\WINDOWS\my.cnf
C:\my.ini
C:\my.cnf
C:\Program Files\MySQL\MySQL Server 5.7\my.ini
C:\Program Files\MySQL\MySQL Server 5.7\my.cnf
3. 2でチェックした項目の設定ファイルがMySQLで読み込まれるファイル
変更点
まずは、ここのファイルをコピーして編集していきます(このファイルはMySQLが自動で生成するファイルです)
C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
変更点は以下の通り
''' my.ini
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
'''
この変更をしたあとに、
C:\Program Files\MySQL\MySQL Server 5.7 ここに設定ファイルをコピーしてMySQLを再起動したらOK!
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 | C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\ |
+--------------------------+---------------------------------------------------------+
まとめ
ネットで書かれている通りに設定しても変更が反映されないのでかなり、調べました。
自分でコマンドを打って調べるやり方を身に着ければもっと時間がかからずに設定できますかね。