1
0

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 1 year has passed since last update.

MySQLの文字コードをutf8に変更する

Posted at

環境

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でどの設定ファイルが読み込まれているのか確認します。

  1. コマンドプロンプトもしくは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\ |
+--------------------------+---------------------------------------------------------+

まとめ

ネットで書かれている通りに設定しても変更が反映されないのでかなり、調べました。
自分でコマンドを打って調べるやり方を身に着ければもっと時間がかからずに設定できますかね。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?