Mysql迁移达梦
Docker安装达梦8
用于测试开发
docker run -d -p 5236:5236 --restart=always --name dm8 --privileged=true \
-e PAGE_SIZE=32 \
-e LD_LIBRARY_PATH=/opt/dmdbms/bin \
-e INSTANCE_NAME=dm8 \
-e LENGTH_IN_CHAR=1 \
-e COMPATIBLE_MODE=4 \
-e CASE_SENSITIVE=0 \
-v $PWD/data:/opt/dmdbms/data \
dm8_single:v8.1.2.128_ent_x86_64_ctm_pack4
重点:
开启兼容模式 COMPATIBLE_MODE
0:不兼容,1:兼容 SQL92 标准,2:部分兼容 ORACLE,3:部分兼容 MS SQL SERVER,4:部分兼容 MYSQL, 5:兼容 DM6,6:部分兼容 TERADATA
ALTER SYSTEM SET 'COMPATIBLE_MODE'=4 SPFILE;
客户端JDBC指南
迁移相关问题
- 查询结果无法转换为 java 实体类定义的枚举类型字段
升级至最新的达梦驱动
- Mysql函数
GROUP_CONCAT
无法使用
- 列[`]附近出现错误
DM无法识别[`]
对XML中的SQL里面的[`]符号进行删除替换
- 列[force]附近出现错误
DM无法识别[force],对XML中的SQL里面的[force]进行删除替换
达梦数据库中是不允许对大字段(clob blob)类型的列进行排序操作的,部分新版本可以修改配置 ini 参数 ENABLE_BLOB_CMP_FLAG=1。
SP_SET_PARA_VALUE(1,'ENABLE_BLOB_CMP_FLAG',1)
-
无法解析的成员访问表达式[IF]
可参考同上,或者使用
DECODE
函数替代
- 列名为关键字
异常信息: 列[reference]附近出现错误: 语法分析出错
参考方案: eco.dameng.com/community/a…
alter system set 'GROUP_OPT_FLAG'=1 both;
- dm无法连表删除
函数差异
Mysql | DM8 | 问题描述 | 解决方案| |
---|---|---|---|
YEARWEEK | WEEK | 无法识别[YEARWEEK] | 使用[WEEK]替换 |
DATEDIFF | DATEDIFF | 语法错误 | 细品文档 |
IF | DECODE | 无法识别[IF] | 使用[DECODE]替换, 或者自定义函数 |
FIND_IN_SET | 无 | 无法识别[FIND_IN_SET] | 可自定函数 |