天天看點

docker mysql utf8mb4 編碼問題解決方法docker mysql utf8mb4 編碼問題解決方法

docker mysql utf8mb4 編碼問題解決方法

最近在學習docker,mysql寫入中文報錯的問題困擾了我2,3天,在搜尋了相關資料後終于找到了解決方法。原因是mysql5.7及之前的預設字元集是latain,而它是不支援中文的。

基本思路是基于官方的mysql docker image,建構一個預設字元集為utf8mb4的新鏡像,後面再用到mysql的時候直接用這個新鏡像。檔案也可以直接在這下載下傳,具體步驟如下:

1.建立檔案utf8mb4.cnf,其内容如下,這個就是sql的配置檔案,作用是把預設字元集改為utf8mb4

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
           

2.在utf8mb4.cnf同一目錄,建立檔案Dockerfile,内容如下,作用是基于mysql5.6 官方的docker鏡像,把utf8mb4.cnf 複制到容器的/etc/mysql/conf.d/目錄下,建構新鏡像

FROM mysql:
COPY utf8mb4.cnf /etc/mysql/conf.d/
           

3.在該目錄打開shell,輸入如下指令,基于上面2個檔案建構新鏡像,并打上标簽mysql5.6_utf8mb4

docker build . -t mysql5_utf8mb4
           

大功告成,後面需要運作mysql容器時就在shell用以下的指令即可

docker run mysql5_utf8mb4
           

使用utf8mb4字元集的原因是,mysql隻有它才完整支援utf8的标準,比如emoji表情。

參考資料:

mysql如何完整支援utf8

mysql docker官方鏡像的文檔