问题
客户开发商 反馈 两台达梦数据库 执行相同SQL, 100.90.34.131上的 SQL语法 不支持。反馈是版本低导致的
分析
版本
100.90.34.131
10.74.28.22
发现 两个数据库大版本 一致,排除 版本原因。
开发环境
开发商 使用 10.74.28.22 的达梦。使用的是 MySQL的环境。暂时分析是 100.90.34.131 上的达梦没开启 MySQL兼容模式。
解决
调整下面两个参数
COMPATIBLE_MODE=4 ENABLE_BLOB_CMP_FLAG=1
参数设置完重启
systemctl restart DmServiceDMSERVER.service
COMPATIBLE_MODE
COMPATIBLE_MODE | 0 | 静态 | 是否兼容其他数据库模式。0:不兼容,1:兼容SQL92标准,2:部分兼容ORACLE,3:部分兼容MS SQL SERVER,4:部分兼容MYSQL,5:兼容DM6,6:部分兼容TERADATA,7:部分兼容POSTGRES |
修改 dm.ini 的 compatible_mode 参数为 4,来兼容 MySQL 语法,修改参数后需要重启数据库服务。 方法 2: 非 mysql 兼容模式下(即 COMPATIBLE_MODE 不等于 4),修改 GROUP_OPT_FLAG(动态会话级)参数包含 1 取值,即支持查询项不是 GROUP BY 表达式。
alter system set 'GROUP_OPT_FLAG'=1 both;
ENABLE_BLOB_CMP_FLAG
ENABLE_BLOB_CMP_FLAG:是否支持大字段类型的比较。0:不支持;1:支持。设置为 1 后支持 DISTINCT、ORDER BY、分析函数和集函数支持对大字段进行处理。
注意:该参数并不能支持 GROUP BY 对大字段进行处理。
---将ENABLE_BLOB_CMP_FLAG参数设置为1 sp_set_para_value(1,'ENABLE_BLOB_CMP_FLAG',1);