达梦兼容MySQL问题

问题

客户开发商 反馈 两台达梦数据库 执行相同SQL, 100.90.34.131上的 SQL语法 不支持。反馈是版本低导致的

达梦兼容MySQL问题_第1张图片

分析

版本

100.90.34.131

达梦兼容MySQL问题_第2张图片

10.74.28.22

达梦兼容MySQL问题_第3张图片

发现 两个数据库大版本 一致,排除 版本原因。

开发环境

开发商 使用 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);

你可能感兴趣的:(数据库,数据库开发)