docker mysql56解決不支持中文的問題

使用官方的docker啓用mysql56後,在進行漢字操做時,會出現Incorrect string value: ,緣由是因爲官方的docker鏡像,默認採用latin1編碼。本文將闡述如何在官方docker的基礎上,使其支持utf8編碼,進而支持漢字的存儲的。html

解決思路

官方的docker在自定義一些配置時,最可能是採用環境變量的方法,因而咱們來到mysql的官方docker,並點擊查看環境變量的連接,最終未發現配置編碼的地方。因而,咱們google到以下文章:使用增長配置文件的方法來實現自定義默認編碼。回覆的牛人給出的解決方案是:自定義一個配置字符編碼的配置文件,並將其掛載到mysql容器相應的位置上。mysql

其實,咱們在使用nginxdocker時,自定義的配置文件也是採用的相同的方式:自定義一個配置文件,而後將其掛載到對應默認配置文件夾中。好比mysql的爲:/etc/mysql/conf.d/。若是你使用的是baidu,也是能夠找到相似的更改配置的文章的,但大多數是告訴咱們啓動了容器之後,如何進入容器進行更改的。其實原理是同樣的,都是去定義配置文件。只是若是咱們將配置文件進行掛載的方式會更加的簡單、靈活、易維護些。nginx

解決方案

新建custom.cnf配置文件,併爲其增長編碼設置。而後將其掛載到容器的默認配置文件夾中。sql

[mysqld]
character-set-server = utf8
collation-server = utf8_unicode_ci
skip-character-set-client-handshake
volumes:
      - ./custom.cnf:/etc/mysql/conf.d/custom.cnf

最後,強制的刷新一下配置信息:刪除原容器,從新創建容器。
docker container ps
docker container rm <containerName>
docker-compose up -ddocker

歡迎加入:河北工業大學夢雲智開發團隊
相關文章
相關標籤/搜索