Docker 建立 MariaDB 中文亂碼問題

使用 Docker 建立 MariaDB 時想預設先塞資料進去,於是寫了一份 Dockerfile

1
2
3
4
FROM mariadb
COPY script.sql /docker-entrypoint-initdb.d/
ENV MYSQL_ROOT_PASSWORD 12345 # root 密碼先預設為 12345
EXPOSE 3306

script.sql 的內容如下,建立一個 test 資料庫和一張 TEST_TABLE 的資料表,再塞入一筆測試資料

1
2
3
4
5
6
7
8
9
10
11
CREATE DATABASE test;
USE test;

CREATE TABLE TEST_TABLE (
    ID int NOT NULL AUTO_INCREMENT,
    NAME varchar(64) CHARACTER SET utf8 NULL,
    CONSTRAINT PK_TEST_TABLE PRIMARY KEY (ID)
);

INSERT INTO TEST_TABLE (ID, NAME)
VALUES (1, '測試');

首先建立 Docker image

1
docker build . -t test-db

再將 container 跑起來

1
docker run -it -d --name test-db -p 3306:3306 test-db

到資料庫查詢時,沒想到出現中文亂碼

image

後來找了一篇解法 (參考相關連結),多新增一個環境變數 LANG=C.UTF-8 即可解決

1
2
3
4
5
FROM mariadb
COPY script.sql /docker-entrypoint-initdb.d/
ENV LANG=C.UTF-8
ENV MYSQL_ROOT_PASSWORD 12345
EXPOSE 3306

image

相關連結