问题现象

系统从 MySQL 迁移到达梦后,JSON 字符串中的 \ 未自动转义,导致保存内容异常。

例如:

INSERT INTO t1 VALUES(‘{\”a\”:1}’);

MySQL 实际保存:

{“a”:1}

达梦默认保存:

{\”a\”:1}

导致程序 JSON 解析异常。

原因

达梦默认:

即:

\ 不作为转义字符
与 MySQL 默认行为不一致

处理方案

开启达梦反斜杠转义功能。

临时修改(立即生效)

查看参数:

修改参数:

参数说明:

参数值 含义
0 默认,不转义 \
1 开启 MySQL 风格转义

永久生效(重要)

需同步修改 dm.ini。

dm.ini 位置

常见位置:

或:

修改内容

找到:

修改为:

同时确认:

表示 MySQL 兼容模式。

生效方式

修改 dm.ini 后:

必须重启达梦数据库。

例如:

或者

按实际服务名为准。

当前标准配置

注意事项

开启后:

会按 MySQL 转义规则解析。

可能影响:

  • Windows 文件路径
  • 正则表达式
  • 特殊字符串

例如:

可能被解析为:

因此涉及路径时建议: