Mac OS Monterey下MySQL Workbench运行SQL脚本报ascii解码错误
报错场景
设备环境:Mac OS Monterey,已安装MySQL Server、MySQL Workbench
触发操作:在Workbench中运行本地.sql文件
报错信息:ascii codec can't decode byte 0xe in position 2380: ordinal not in range(128)
问题根因
该报错由编码不匹配触发:MySQL Workbench默认使用ASCII编码读取.sql文件,但目标文件中存在超出ASCII编码范围(0-127)的字节,常见来源包括文件内的中文注释/中文数据、全角特殊符号、文件本身以UTF-8/GBK等非ASCII编码保存、文件传输/解压损坏产生的异常乱码字节。
解决方法
按优先级从高到低尝试即可:
- 修改Workbench默认文件编码
- 打开MySQL Workbench,点击左上角菜单栏的「MySQL Workbench」→「设置(Preferences)」
- 在设置面板左侧选择「SQL Editor」分类,下拉找到文件编码配置项
- 将默认读取编码从
US-ASCII修改为UTF-8(如果文件是从Windows设备拷贝的,可优先试GB18030) - 完全退出Workbench后重启,再重新打开.sql文件运行
- 手动指定编码打开目标文件
不要通过最近文件列表、双击关联文件的方式打开sql脚本,选择顶部菜单栏「File」→「Open SQL Script」,在弹出的文件选择窗口中,找到编码选择下拉框,手动选定匹配文件的编码(优先试UTF-8、GB18030),再选中目标文件打开运行。 - 本地预处理sql文件修复异常编码
- 右键点击目标.sql文件,选择用Mac自带的「文本编辑(TextEdit)」打开,打开时若弹出编码选择提示,优先选UTF-8
- 如果能正常打开,直接按
Command+S保存,保存时确认格式为「纯文本」、编码为「UTF-8」,覆盖原文件即可 - 如果打开后在2380字符位置附近看到无法识别的乱码字符,直接删除该段乱码(这类乱码多为文件传输、解压过程中损坏产生的非法字节),再保存文件
- 绕开Workbench用命令行导入
打开Mac终端,替换命令中的用户名、数据库名、sql文件路径后执行,输入MySQL密码即可完成导入,完全避开Workbench本身的编码检测逻辑:mysql -u 你的MySQL用户名 -p 要导入的目标数据库名 < sql文件的完整本地路径
示例:用户名为root、目标库为test、sql文件存放在下载目录下名为data.sql,对应命令为mysql -u root -p test < ~/Downloads/data.sql
注意:操作前务必备份原.sql文件,如果修改编码后文件打开出现大面积乱码,不要直接保存,换其他编码选项重试,避免损坏原文件内容。
内容的提问来源于stack exchange,提问作者S K
相关产品推荐
相关产品推荐

