

MySQL5.7.23をインストールし、/etc/my.cnfで以下の設定を入れて文字コードを設定しています。

[code]

    [mysqld]
    character-set-server = utf8mb4
    
    [client]
    default-character-set=utf8mb4
    
[/code]

環境はVirtualbox(ホスト：win10 ゲスト：CentOS7)です。

teratermでMySQLに入り「show variables like '%char%';」を実行して文字コードが正しい事を確認しました。

[code]

    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                    /usr/share/mysql/charsets/ 
    validate_password_special_char_count  1                          
    
[/code]

一方、MySQL Workbenchで同じコマンドを実行すると結果が異なってしまいます。

[code]

    character_set_client                      utf8
    character_set_connection                  utf8
    character_set_database                    utf8mb4
    character_set_filesystem                  binary
    character_set_results                     utf8
    character_set_server                      utf8mb4
    character_set_system                      utf8
    character_sets_dir                        /usr/share/mysql/charsets/
    validate_password_special_char_count      1
    
[/code]

また、workbench上で絵文字の格納されたカラムをselectすると文字化けして表示されます。  
この時「SET NAMES utf8mb4;」を実行すると正常に表示されます。

以上からworkbenchがサーバではなくローカルの設定を使っているように見受けられるのですがworkbenchには文字コードの設定が出来そうな箇所が無く、ホストにはmysqlをインストールしていないのでmy.cnf(my.ini)も存在しません。

workbenchがどこのどういった設定を読み込んでいるのかわかりますでしょうか。


CC BY-SA 4.0
2018-10-04T16:24:03.580
48978
2019-06-22T02:32:35.293
11050
question
mysql centos windows-10
MySQL Workbenchとサーバ上でshow variables like '%char%';の結果が異なる


<https://dev.mysql.com/doc/workbench/en/wb-mysql-connections-new.html>

^ 上記ページによれば、 MySQL Workbench は問答無用で utf8 を利用して connection を張る様子です。

> When opening connections, MySQL Workbench automatically sets the client
> character set to utf8. Manually changing the client character set, such as
> using SET NAMES ..., may cause MySQL Workbench to not correctly display the
> characters. For additional information about client character sets, see
> Connection Character Sets and Collations.

なので、答えは: MySQL Workbench は、そのコネクションの接続を確立する際に利用する config は、 my.cnf
を読んでいないからだと思われます。


CC BY-SA 4.0
2019-06-22T02:32:35.293
55998
2019-06-22T02:32:35.293
754
48978
answer