Docker环境下含繁体中文的MySQL备份与恢复问题求助
解决Docker容器导出含繁体中文MySQL数据库的恢复错误问题
错误原因
ERROR at line : Unknown command '\0' 是因为导出时终端重定向或伪终端分配导致备份文件混入了无效空字符,多字节字符(如繁体中文)场景下更易触发这类编码干扰问题。
正确导出方案
方案1:容器内生成备份再复制到宿主机
先在Docker容器内直接生成备份文件,规避终端输出干扰:
docker exec testsigma_mysql /usr/bin/mysqldump -u root --password=root --default-character-set=utf8mb4 testsigma_opensource > /tmp/backup.sql
再将容器内的备份文件复制到宿主机:
docker cp testsigma_mysql:/tmp/backup.sql ./backup.sql
方案2:禁用伪终端直接重定向输出
给docker exec添加-T参数,关闭伪终端分配,避免终端编码处理修改输出内容:
docker exec -T testsigma_mysql /usr/bin/mysqldump -u root --password=root --default-character-set=utf8mb4 testsigma_opensource > backup.sql
恢复时的注意事项
恢复操作同样需要避免终端干扰,同时指定统一字符集保证繁体中文正常读取:
docker exec -i testsigma_mysql /usr/bin/mysql -u root --password=root --default-character-set=utf8mb4 testsigma_opensource < backup.sql
繁体中文兼容性确认
确保目标数据库、表的字符集为utf8mb4(支持所有Unicode字符,包括繁体中文生僻字),可在MySQL客户端执行以下命令验证:
SHOW CREATE DATABASE testsigma_opensource; SHOW CREATE TABLE your_table_name;
内容的提问来源于stack exchange,提问作者weiling shao
相关产品推荐
相关产品推荐

