MySQLの文字コードをlatin1からUTF-8に変更できない
冒頭
私はMySQL超初心者です。普段はフロントエンドエンジニアをしております。PHPの学習に際し、データベースも学ぼうかしらと思い、MySQLを触ろうと始めました。さて、MySQLのインストール・アカウント作成が終わり、データベースとはどんなことが出来るんだと意気込んで始めたところ、早速躓いてしまいました。Google先生を頼っても「my.iniを修正して完了っしょ!」という記事や質問箱しか出てこなかったので、先輩方のお力をお借りしたいと思いました。
問題点
まず初めに、my.iniをデスクトップ上にコピーし、そこで編集・更新をかけた後に「C:」直下・「C:\ProgramData\MySQL\MySQL Server 5.7」直下、「C:\Program Files\MySQL\MySQL Server 5.7」直下の3か所にあるmy.iniに反映させました。
その後、MySQLをWindowのサービスプログラムで再起動させ、コマンドプロンプトを再度立ち上げ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 | C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\ |
+--------------------------+---------------------------------------------------------+
8 rows in set, 1 warning (0.00 sec)
上記のように、反映前と変化がなく、「character_set_database」と「character_set_server」がlatin1のままであることが分かりました。
my.iniの変更箇所について
my.iniの変更した箇所については下記のとおりです。
[mysql]
# default-character-setに文字コードを指定
default-character-set=utf8
[mysqld]
# character-set-serverに文字コードを指定
character-set-server=utf8
更に、[client]にdefault-character-set=utf8を追加するという手段も見かけたので、MySQLの文字コードに変化がなかった後にこちらも試してみました。
[client]
# 下記を追加
default-character-set=utf8
結果
my.iniを書き替えた後、各プログラムの再起動、PCの再起動を実行し、再度コマンドプロンプトで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 | C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\ |
+--------------------------+---------------------------------------------------------+
8 rows in set, 1 warning (0.02 sec)
うーん。。。
ワカラナイ。。。
余談
my.iniのUTF-8へ変更する記事を漁っていた際に、Python専門の方が、MySQL上でUTF-8に修正するということをされていたのですが、一時の変更した出来ない仕様で、再起動させるとまたlatin1に戻ってしまいました。
参考サイト
・そもそものスタート場所
・参考サイト1 (※DB作成する前の段階だったので参考にならず)
・参考サイト2 (※テーブル作成前提で話進んで置いてきぼりでした)
・他サイト1(質問箱)
・他サイト2(質問箱) (※XAMPPを使わない手段として参考にしました。XAMPPをアンインストールしたら成功したという話もありますが、怖くて指が動きません(^^;)