MySQL Workbench执行数据库导出时出现ASCII编码及文件占用错误
原报错信息:
14:18:07 Dumping ct (all tables)
Running: mysqldump.exe --defaults-file="c:\users\admini~1\appdata\local\temp\tmphnpsqu.cnf" --user=root --host=localhost --protocol=tcp --port=3306 --default-character-set=utf8 --routines --skip-triggers "ct"
Error executing task: 'ascii' codec can't encode character u'\xe4' in position 6: ordinal not in range(128)
Error executing task [Error 32] The process cannot access the file because it is being used by another process: 'c:\users\admini~1\appdata\local\temp\tmphnpsqu.cnf'
14:18:08 Export of C:\Users\Administrator\Documents\dumps\Dump20210825 (2).sql has finished
错误1:ASCII编码无法编码非ASCII字符
该错误由运行环境编码不兼容非ASCII字符(中文、特殊符号、拉丁扩展字符等)导致,可按以下步骤解决:
- 检查导出目标文件路径是否包含中文、特殊符号,将路径修改为纯英文路径,例如
C:\mysql_dumps\ct_backup.sql,避免放在带有中文的用户子目录下 - 右键MySQL Workbench快捷方式,选择「属性」,在「目标」栏的原有路径末尾添加
--default-character-set=utf8mb4,保存后重启Workbench再执行导出 - 若上述操作无效,在导出配置页的「高级选项」中手动指定导出字符集为
utf8mb4,取消默认的自动编码检测选项
错误2:临时配置文件被其他进程占用
该错误由Workbench生成的临时.cnf配置文件被安全工具、残留进程锁定导致,可按以下步骤解决:
- 关闭当前Workbench窗口,打开任务管理器,结束所有
mysqldump.exe、mysqlworkbench.exe残留进程 - 临时关闭杀毒软件、文件实时防护工具,或者将系统临时目录(
C:\Users\你的用户名\AppData\Local\Temp\)加入安全工具的白名单 - 按下Win+R输入
%temp%回车打开临时目录,删除所有可删除的临时文件,被占用的文件跳过即可 - 若仍报错,可直接使用命令行执行mysqldump导出,参考命令:
mysqldump -u root -p --default-character-set=utf8mb4 --routines ct > C:\mysql_dumps\ct_backup.sql
执行后输入root账号的数据库密码即可完成导出
内容的提问来源于stack exchange,提问作者DenisDev

