LoginSignup
26
12

More than 5 years have passed since last update.

dockerのmysqlでUTF8が文字化けしたらやること

Last updated at Posted at 2018-02-18

はじめに

dockerでローカル開発環境を作る時、大概お世話になるのがmysqlイメージですよね〜
/docker-entrypoint-initdb.dに初期化のsqlを入れたフォルダをマウントするとdocker起動時に実行してくれるのでほんと便利ですね!
だけど、えー・・文字化けしてるやん!ってことで悩んでるかたはこちらを試してみてください。

やること

dockerを起動する時のコマンドにcharacter-setcollation-serverを指定しときましょう

docker-compose.yml
version: '3'
services:
  mysql:
    image: mysql
    command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
    volumes:
      - ./docker/mysql:/docker-entrypoint-initdb.d
    ...

起動時に実行されるsqlでは、先頭でCHARACTER_SET_CLIENTCHARACTER_SET_CONNECTIONをしときましょう。

./docker/mysql/create.sql
SET CHARSET UTF8;
CREATE DATABASE IF NOT EXISTS sample_database DEFAULT CHARACTER SET utf8;

USE sample_database;
CREATE TABLE IF NOT EXISTS sample_table(
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(255),
  updated_at TIMESTAMP
);

./docker/mysql/insert.sql
USE sample_database;

SET CHARACTER_SET_CLIENT = utf8;
SET CHARACTER_SET_CONNECTION = utf8;

INSERT INTO sample_table 
  (name) 
VALUES 
  ('テスト1'),
  ('テスト2');

これで大丈夫なはず!?

26
12
1

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
26
12