nacos 2.0.0 docker-compose部署导入脚本出现乱码的原因分析
简言
记录下nacos2.0.0 docker部署时初始化数据乱码的问题,记录以备忘。
nacos部署脚本
version: '3.0'
services:
nacos:
image: nacos/nacos-server:2.0.0
hostname: "nacos-standalone"
env_file:
- ./env/nacos-standlone-mysql.env
volumes:
- ./nacos/standalone-logs/:/home/nacos/logs
- ./nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties
ports:
- 8848:8848
- 9848:9848
- 9849:9849
depends_on:
- mysql
restart: on-failure
mysql:
container_name: mysql
image: mysql:8.0.21
env_file:
- ./env/mysql.env
volumes:
- ./mysql/conf/:/etc/mysql/conf.d
- ./mysql/logs/:/logs
- ./mysql/data/:/var/lib/mysql
# 初始化目录挂载
- ./mysql/init/:/docker-entrypoint-initdb.d/
ports:
- "3306:3306"
restart: always
command:
# 将mysql8.0默认密码策略 修改为 原先 策略 (mysql8.0对其默认策略做了更改 会导致密码无法匹配)
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
详情请查看:https://gitee.com/matevip/matecloud/blob/dev/doc/deploy/docker-standalone/docker-compose.yml
其中增加了初始化脚本init.sql,主要就是mysql启动后创建用户并导入数据后发现,默认自带的中文乱码。
排坑过程
排坑一:command设置utf-8参数
command:
# 将mysql8.0默认密码策略 修改为 原先 策略 (mysql8.0对其默认策略做了更改 会导致密码无法匹配)
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
尝试后,发现依然乱码。
排坑二:shell脚本导入
通过shell方式导入,发现依然乱码。
开始怀疑SQL脚本有问题
脚本是官方提供的,我只是在里面插入了matecloud的配置数据,后来比较使用mysql工具导出的数据来看,里面有一行代码引起了注意。
SET NAMES 'utf8mb4';
然后在init.sql里增加此条代码,问题解决。
记录以备忘。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。