如何禁止MySQL Workbench自动格式化 避免JSON存储转义失效
MySQL Workbench插入JSON时\n被自动转为换行符的解决方法
问题现象
通过MySQL Workbench向数据表插入JSON类型值时,原始字符串片段为:
"test\n\ntest\n\ntest3"
插入完成后查询校验数据,发现字符串中的\n转义符被自动转换为实际存储的换行符,存储内容表现为:
"test test test3"
该转换会直接破坏JSON格式合法性,导致存储的JSON值无效。
问题原因
该转换是MySQL Workbench客户端的默认行为,和MySQL服务端本身的存储逻辑无关:Workbench默认开启了SQL编辑器的转义字符解析规则,会在提交SQL执行前,自动把字符串中的\n这类转义序列解析为对应的实际控制字符,最终提交给服务端的内容就已经是带真实换行的内容了。
解决方法
可根据使用场景选择以下任意一种方案:
方案1:修改全局配置关闭自动转义(长期生效)
- 打开MySQL Workbench设置页:Windows/Linux系统点击顶部菜单栏
Edit->Preferences,macOS系统点击顶部菜单栏MySQL Workbench->Settings - 在设置窗口左侧菜单选择
SQL Editor分类 - 在右侧
Query Editor配置分组下,取消勾选 Treat\as escape character in strings 选项 - 点击
OK保存配置,重启MySQL Workbench后配置即可生效,后续提交的字符串会原样发送给服务端,不会自动解析转义符
注意:关闭该配置后,反斜杠会被当做普通字符处理,如果后续需要在非JSON字段的普通字符串中使用转义序列,需要临时重新开启该选项,或者手动做转义处理。
方案2:二次转义反斜杠(无需改配置,临时使用)
如果不想修改全局配置,可以在编写插入SQL时,对JSON字符串里的反斜杠做二次转义,把所有\n替换为\\n,调整后的插入片段为:
"test\\n\\ntest\\n\\ntest3"
Workbench解析该段内容时,会把\\转义为单个\,最终存入字段的内容就会保留原始的\n转义符,不会破坏JSON结构。
内容的提问来源于stack exchange,提问作者Mikkel Fennefoss
相关产品推荐
相关产品推荐

