前提・実現したいこと
クライアントツール(HeidiSQLまたは、MySQL Workbench)でテーブルの値を文字化けせずに表示させたいです。
DB:mysql 5.7
※Docker composeで立ち上げています。
設定ファイル等でミスがありましたら、ご指摘いただけると幸いです。
該当のソースコード
yml
1version: '3.3' # docker-composeのversionを指定 2services: 3 db: 4 build: ./docker/mysql # Dockerfileの置き場所を指定 5 image: mysql:5.7 6 restart: always 7 environment: 8 MYSQL_DATABASE: sample_db 9 MYSQL_USER: user 10 MYSQL_PASSWORD: password 11 MYSQL_ROOT_PASSWORD: rootpassword 12 ports: 13 - "3314:3306" 14 command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci 15 volumes: 16 - ./docker/mysql/conf.d:/etc/mysql/conf.d/my.cnf 17 - ./docker/mysql/initdb.d:/docker-entrypoint-initdb.d 18 19
cnf
1[mysqld] 2character-set-server=utf8mb4 3collation-server=utf8mb4_unicode_ci 4explicit-defaults-for-timestamp=1 5general-log=1 6general-log-file=/var/log/mysql/mysqld.log 7 8[client] 9default-character-set=utf8mb4
sql
1CREATE TABLE userinfo ( 2 id INT NOT NULL, 3 name VARCHAR(255), 4 sex CHAR(1), 5 PRIMARY KEY (id) 6)DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
sql
1INSERT INTO userinfo (id,name,sex) VALUES (1, '来栖翔','0'); 2INSERT INTO userinfo (id,name,sex) VALUES (2, '花子','1');
Dockerfile
1FROM mysql:5.7 2RUN touch /var/log/mysql/mysqld.log # 指定の場所にログを記録するファイルを作る
試したこと
Docker-composeで立ち上げたときのmysqlの文字コード設定は以下です。
character_set_clientとcharacter_set_connectionがlatin1なのが気になります。
docker-compose.ymlにてcharacter_set_client=utf8mb4など修正を加えてみましたが、ダメでした。
console
1mysql> show variables like '%char%'; 2+--------------------------+----------------------------+ 3| Variable_name | Value | 4+--------------------------+----------------------------+ 5| character_set_client | latin1 | 6| character_set_connection | latin1 | 7| character_set_database | utf8mb4 | 8| character_set_filesystem | binary | 9| character_set_results | latin1 | 10| character_set_server | utf8mb4 | 11| character_set_system | utf8 | 12| character_sets_dir | /usr/share/mysql/charsets/ | 13+--------------------------+----------------------------+ 148 rows in set (0.00 sec)
あなたの回答
tips
プレビュー