質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

2回答

2747閲覧

MySQL8.0(Windows 10)における文字コードの変更が出来ません

kaya_miyoshi

総合スコア23

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2018/11/01 08:16

編集2018/11/02 02:00

MySQLコマンドラインツールでMySQLサーバへ接続し、

show variables like 'char%';

を実行すると、

mysql> show variables like 'char%'; +--------------------------+---------------------------------------------------------+ | Variable_name | Value | +--------------------------+---------------------------------------------------------+ | character_set_client | cp932 | | character_set_connection | cp932 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | cp932 | | character_set_server | utf8mb4 | | character_set_system | utf8 | | character_sets_dir | C:\Program Files\MySQL\MySQL Server 8.0\share\charsets\ | +--------------------------+---------------------------------------------------------+ 8 rows in set, 1 warning (0.00 sec)

で、

set character_set_client=utf8;

...などをすれば一時は文字コードが変わりますが、MySQLサーバを再起動すると戻ってしまいます。

my.iniの変更では文字コードが変わりません。どうすれば文字コードが変わりますか?

ー my.ini(途中まで) ー

# Other default tuning values # MySQL Server Instance Configuration File # ---------------------------------------------------------------------- # Generated by the MySQL Server Instance Configuration Wizard # # # Installation Instructions # ---------------------------------------------------------------------- # # On Linux you can copy this file to /etc/my.cnf to set global options, # mysql-data-dir/my.cnf to set server-specific options # (@localstatedir@ for this installation) or to # ~/.my.cnf to set user-specific options. # # On Windows you should keep this file in the installation directory # of your server (e.g. C:\Program Files\MySQL\MySQL Server X.Y). To # make sure the server reads the config file use the startup option # "--defaults-file". # # To run the server from the command line, execute this in a # command line shell, e.g. # mysqld --defaults-file="C:\Program Files\MySQL\MySQL Server X.Y\my.ini" # # To install the server as a Windows service manually, execute this in a # command line shell, e.g. # mysqld --install MySQLXY --defaults-file="C:\Program Files\MySQL\MySQL Server X.Y\my.ini" # # And then execute this in a command line shell to start the server, e.g. # net start MySQLXY # # # Guidelines for editing this file # ---------------------------------------------------------------------- # # In this file, you can use all long options that the program supports. # If you want to know the options a program supports, start the program # with the "--help" option. # # More detailed information about the individual options can also be # found in the manual. # # For advice on how to change settings please see # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html # # # CLIENT SECTION # ---------------------------------------------------------------------- # # The following options will be read by MySQL client applications. # Note that only client applications shipped by MySQL are guaranteed # to read this section. If you want your own MySQL client program to # honor these values, you need to specify it as an option during the # MySQL client library initialization. # [client] # pipe= # socket=MYSQL port=3306 default-character-set=utf8 [mysql] no-beep default-character-set=utf8 # SERVER SECTION # ---------------------------------------------------------------------- # # The following options will be read by the MySQL Server. Make sure that # you have installed the server correctly (see above) so it reads this # file. # # server_type=3 [mysqld] character-set-server=utf8 # The next three options are mutually exclusive to SERVER_PORT below. # skip-networking # enable-named-pipe # shared-memory # shared-memory-base-name=MYSQL # The Pipe the MySQL Server will use # socket=MYSQL # The TCP/IP Port the MySQL Server will listen on port=3306 # Path to installation directory. All paths are usually resolved relative to this. # basedir="C:/Program Files/MySQL/MySQL Server 8.0/" # Path to the database root datadir=C:/ProgramData/MySQL/MySQL Server 8.0/Data # The default character set that will be used when a new schema or table is # created and no character set is defined # character-set=utf8

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/11/01 08:22

my.ini変更後にMySQL再起動では?
kaya_miyoshi

2018/11/01 08:25

my.ini変更後にMySQL再起動しても文字コードを変更できません。
guest

回答2

0

こちら、やこちらを確認下さい。
※要は複数個所の変更が必要ということ。

後は、複数のバージョンをインストールしいて、修正するmy.iniが違うってことは無いですか?

それから、8.0だとutf8と記述するとwarning出たりするらしいので、utf8mb4などの指定がよろしいようです。
MYSQL文字セットの変換
MySQL Innovation Day Tokyo で MySQL 8 の文字コードについて話した

投稿2018/11/01 11:01

編集2018/11/01 11:02
sazi

総合スコア25138

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaya_miyoshi

2018/11/02 00:49

[client] default-character-set=utf8 [mysqld] character-set-server=utf8 [mysql] default-character-set=utf8 の変更をしてもダメです。 複数のバージョンをインストールしてません。実行ファイルのパスは "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe" --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" MySQL80 ...で、my.iniを読み込むようになっています。なぜ文字コードの変更が出来ないのでしょうか?
sazi

2018/11/02 01:18

SHOW GLOBAL VARIABLES LIKE 'chara%'で確認するとどうなっていますか? コンソールでset character_set_clientを行って変更されるのは、セッションの情報なのでiniの内容が書き換わる訳ではありません。
sazi

2018/11/02 01:31

iniの情報を、質問に追記された方が早いような・・・
kaya_miyoshi

2018/11/02 02:02

mysql> show global variables like 'chara%'; +--------------------------+---------------------------------------------------------+ | Variable_name | Value | +--------------------------+---------------------------------------------------------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8 | | character_sets_dir | C:\Program Files\MySQL\MySQL Server 8.0\share\charsets\ | +--------------------------+---------------------------------------------------------+ 8 rows in set, 1 warning (0.01 sec) ...で変更されているということでいいのでしょうか?
sazi

2018/11/02 02:29

SHOW GLOBAL VARIABLES は、MySQL への新しい接続に使用される値を表示します。 SHOW [SESSION] VARIABLES だと、現在の接続に有効な値を表示します。 現状何もしないのに、GLOBAL とSESSIONの表示内容が異なっているということでしょうか?
kaya_miyoshi

2018/11/02 04:35

何もしないのに、GLOBAL とSESSIONの表示内容が異なっています。それにmy.iniの変更が反映されない気がします。どうすればよいでしょうか?
yukky1201

2018/11/02 04:40

試しにインストールしてみたところ、SESSIONとGLOBALで値が違いました。 windowsのコマンドプロンプトはsjisなので、mysqlが気を利かせてSESSIONの値をsjis(cp932)にしてくれてるのですかね mysql> show variables like 'char%'; +--------------------------+---------------------------------------------------------+ | Variable_name | Value | +--------------------------+---------------------------------------------------------+ | character_set_client | cp932 | | character_set_connection | cp932 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | cp932 | | character_set_server | utf8mb4 | | character_set_system | utf8 | | character_sets_dir | C:\Program Files\MySQL\MySQL Server 8.0\share\charsets\ | +--------------------------+---------------------------------------------------------+ 8 rows in set, 1 warning (0.01 sec) mysql> mysql> show global variables like 'chara%'; +--------------------------+---------------------------------------------------------+ | Variable_name | Value | +--------------------------+---------------------------------------------------------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8 | | character_sets_dir | C:\Program Files\MySQL\MySQL Server 8.0\share\charsets\ | +--------------------------+---------------------------------------------------------+ 8 rows in set, 1 warning (0.01 sec)
kaya_miyoshi

2018/11/02 04:49

わざわざインストールしていただきありがとうございます。私も同じ結果です。私が知りたいのがmy.iniの変更が反映されない点です。よろしくお願いいたします。
sazi

2018/11/03 03:38

show global variables like 'chara%';の結果で全てutf8になっていると思いますけど、どういう点で反映されていないと言われているのでしょう?
sazi

2018/11/03 03:41

utf8mb4になっているという事であれば、utf8がutf8mb4の別名という事は回答にも記述しましたが、そういった事ではない?
kaya_miyoshi

2018/11/03 04:42

勘違いしていました。これで解決といたします。
guest

0

ベストアンサー

C:\ProgramData\MySQL\MySQL Server 8.0\my.ini に

[mysqld] character-set-server=utf8

を変更し、mysqlを再起動したら下記の結果になりました

mysql> show global variables like 'chara%'; +--------------------------+---------------------------------------------------------+ | Variable_name | Value | +--------------------------+---------------------------------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | C:\Program Files\MySQL\MySQL Server 8.0\share\charsets\ | +--------------------------+---------------------------------------------------------+ 8 rows in set, 1 warning (0.03 sec)

投稿2018/11/02 05:23

yukky1201

総合スコア2751

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaya_miyoshi

2018/11/02 05:35

C:\ProgramData\MySQL\MySQL Server 8.0\my.ini に変更を加えmysqlを再起動しても mysql> show global variables like 'chara%'; +--------------------------+---------------------------------------------------------+ | Variable_name | Value | +--------------------------+---------------------------------------------------------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8 | | character_sets_dir | C:\Program Files\MySQL\MySQL Server 8.0\share\charsets\ | +--------------------------+---------------------------------------------------------+ 8 rows in set, 1 warning (0.00 sec) になります。どうすればmy.iniで変更できますか?
yukky1201

2018/11/02 05:45

mysqlの再起動は具体的にどのように実行していますか? こちらwin7でwin10ではないのですが、サービスの一覧からmysql80を再起動しています
kaya_miyoshi

2018/11/02 05:49

私はコマンドプロンプトでquit、mysql -u root -pとしてますが、サービスの再起動でもmy.iniの変更は反映されません。
yukky1201

2018/11/02 05:54

>私はコマンドプロンプトでquit、mysql -u root -pとしてますが は、再接続であって再起動ではないのです win10は手元にないので不明なので、ご自身で調べていただくか、よくわからなければパソコンごと再起動しちゃってください。
kaya_miyoshi

2018/11/02 15:39

サービスの再起動でもmy.iniの変更が反映されません。MySQLをアンインストールして再インストールしてもmy.iniの変更は反映されずネットで調べてもわからないままです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問