金仓数据库 standard_conforming_strings 参数维护记录
问题现象
系统从 MySQL 迁移到金仓后,JSON 字符串中的 \ 未自动转义,导致保存内容异常。
例如:
INSERT INTO t1 VALUES(‘{\”a\”:1}’);
MySQL 实际保存:
{“a”:1}
金仓默认保存:
{\”a\”:1}
导致程序 JSON 解析异常。
原因
金仓默认:
|
1 |
standard_conforming_strings = on |
即:
\ 不作为转义字符
与 MySQL 默认行为不一致
处理方案
开启金仓反斜杠转义功能。
临时修改(立即生效)
查看参数:
|
1 |
SHOW standard_conforming_strings; |
修改参数:
|
1 |
SET standard_conforming_strings = off; |
参数说明:
| 参数值 | 含义 |
| 0 | 默认,不转义 \ |
| 1 | 开启 MySQL 风格转义 |
永久生效(重要)
需同步修改 kingbase.conf。
kingbase.conf 位置
常见位置:
|
1 |
/home/data/Kingbase/V009R003C015B0004/data/kingbase.conf |
或:
|
1 |
/home/Kingbase/V009R003C015B0004/data/kingbase.conf |
修改内容
找到:
|
1 |
standard_conforming_strings = on |
修改为:
|
1 |
standard_conforming_strings = off |
生效方式
修改 kingbase.conf 后:
必须重启金仓数据库。
例如:
|
1 |
systemctl restart kingbased.service |
按实际服务名为准。
注意事项
开启后:
|
1 2 3 4 |
\t \n \\ \" |
会按 MySQL 转义规则解析。
可能影响:
- Windows 文件路径
- 正则表达式
- 特殊字符串
例如:
|
1 |
c:\temp |
可能被解析为:
|
1 |
c: emp |
因此涉及路径时建议:
|
1 |
c:\\temp |