最近遇到由于不可见字符M-oM-;M-?导致语句执行失败,做一下记录。
“M-oM-;M-?”不可见字符导致SQL语句执行失败
报错信息如图:
肉眼从SQL语句上看,并不能发现错误,同时也将DM管理工具中的“显示空白字符”开启,还是无法发现异常。
这种情况,一般就要怀疑是否是不可见字符导致,对于普通的文本编辑器一般无法直接看到不可见字符,但是通过一些高级的编辑器或者是Linux系统上的cat等命令相关选项是可以发现(如果只是直接cat文件也是无法看到不可见的字符)。
排查如下
这里直接将文本内容保存到txt文件,然后拷贝到Linux系统中,使用cat -v xxx.txt | more 进行查看。如下:
可以看到CREATE前面会多出一串奇怪的字符,这个就是导致执行失败的不可见字符。
这个字符串是由于使用UTF-8带BOM编码格式导致。
解决办法就是将文件编码格式转成UTF8无BOM编码格式。
解决办法
方法一:使用IDE工具或者高级编辑器工具将文件编码格式转换成无BOM格式
方法二:如果只是单个文件可以使用vim 进行修改,shift+: 然后 set nobomb
方法三:多个文件可以使用shell脚本使用sed命令进行替换,注意这里不能直接使用“M-oM-;M-?”进行替换,需要使用字符对应十六进制进行替换。
sed -i '1s/^\xef\xbb\xbf//' no1.txt
复制
可以通过od命令指定以十六进制显示文件内容,查看对应的十六进制,命令为:
#以16进制显示文件内容
od -tx1 no1.txt | more
复制
如果无法确定字符位置和个数,也可以通过od命令以ASCII码的形式显示文件内容:
od -tc no1.txt | more
复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
2025年4月国产数据库大事记:4个千万级中标项目诞生!2024年达梦净利3.6亿、金仓净利8006.6万……
墨天轮编辑部
2251次阅读
2025-04-30 17:39:54
达梦数据发布上市后首份财报:2024年营收10.4亿、净利3.6亿,销售平均薪酬 101 万、研发 36 万
通讯员
412次阅读
2025-04-15 12:09:47
国产数据库图谱又上新|82篇精选内容全览达梦数据库
墨天轮编辑部
284次阅读
2025-04-23 12:04:21
国产数据库必修课已上新|达梦数据库,从入门到实战
墨天轮-雪宝君
218次阅读
2025-04-28 14:25:11
达梦中国数据库产业基地竣工,光谷崛起“数据之弧”
通讯员
163次阅读
2025-04-23 09:41:05
SQLark V3.4 更新 | 新增 PostgreSQL 数据库支持、SQL 常用代码段、表设计器体验升级,超多新功能等你来探索!
达梦产品与服务
141次阅读
2025-04-17 09:38:11
达梦数据年报首秀:“国产数据库第一股”研发投入力度落后,是“研发驱动”还是“销售驱动”?
通讯员
115次阅读
2025-05-13 09:30:07
中国软件深度研究报告:打造操作系统、数据库央企龙头
通讯员
87次阅读
2025-04-21 12:20:29
一季度营收净利双增长,达梦数据加速构建数据库创新生态圈
通讯员
85次阅读
2025-05-06 09:43:28
深耕四十余载,达梦数据库的进阶之路
通讯员
80次阅读
2025-05-06 09:37:17