MySql切换到达梦数据库,各种问题解决记录

参考官方文档:
https://eco.dameng.com/document/dm/zh-cn/sql-dev/practice-func.html

1. 关键字导致的报错:如ref,comment,top,domain等

Error -2007: 第 1 行, 第 117 列[ref]附近出现错误: 
语法分析出错

解决方案:修改关键字即可

2. 查询列包含大字段,导致的报错

Error -2685: 第42 行附近出现错误:
试图在blob或者clob列上排序或比较	

解决方案:需要将数据库参数ENABLE_BLOB_CMP_FLAG设置为1,
之后数据库便支持查询列,以及DISTINCT、ORDER BY、分析函数和集函数支持对大字段进行处理。

3. convert和using函数不支持导致的报错

Error -2007: 第 32 行, 第 85 列[using]附近出现错误: 

解决方案:
找到错误语句:convert(e.expert_name using gbk) asc
该功能是为了按照拼音首字母排序,
替换为 NLSSORT(e.expert_name,‘NLS_SORT = SCHINESE_PINYIN_M’)即可解决。

4. where条件后的字段值使用双引号导致

Error -2111: 第36 行附近出现错误:
无效的列名[topic]

解决方案:
字段名是小写的情况下,字段值必须使用单引号,因为双引号会把值当成列名。所以需要把双引号改为单引号,
如:and d.data_type=“topic” 改为 ‘topic’

5. 自增主键导致,表设置了主键自增,但是insert语句又设置了主键值

Error -2723: 仅当指定列列表,且SET IDENTITY_INSERT为ON时,才能对自增列赋值

解决方案:
需要考虑是否分表,如果是分表,去掉表的自增;如果是普通单表,可以去掉自制定的主键值。

6. 使用单引号修饰查询列别名导致

Error -2007: 第 4 行, 第 220 列[']附近出现错误: 
语法分析出错

解决方案:查询列可以用双引号修饰,也可以不用引号修饰,但不能使用单引号,因为单引号是用来修饰字段值的
如b.notice_student_read_id AS ‘notice_read_id’ 必须改为 b.notice_student_read_id AS notice_read_id

7. 日期运算语法不支持date_sub&date_add导致

Error -2007: 第 7 行, 第 99 列[7]附近出现错误: 
语法分析出错

解决方案:
获取七天前的时间:date_sub(now(),interval 7 day ),
获取30分钟后的时间:date_add(NOW() ,INTERVAL 30 minute)
替换为 ADD_DAYS(GETDATE(), -7) ,sysdate + 30 / 24 / 60

8. group_concat语法不支持导致

Error -2207: 第24 行附近出现错误:
无法解析的成员访问表达式[group_concat]

解决方案:
group_concat(r.role_name)替换为 CONCAT (r.role_name,‘,’)

9. 修改语句的列重复导致

Error -2114: 第77 行附近出现错误:
重复的列名[invalid] 

解决方案:去除多余的查询列 invalid 即可

10. 日期转换格式语法不支持导致

Error -2007: 第 5 行, 第 128 列[10]附近出现错误: 
语法分析出错

解决方案:
DATE_FORMAT(start_time, ‘%Y-%m-%d %H:%i’)
替换为 TO_CHAR(start_time, ‘YYYY-MM-DDHH24:MI’) 即可

11. 日期运算DATEDIFF语法不支持导致

解决方案:
DATEDIFF (now(), send_time) <= 60
替换为 sysdate - send_time <= 60

12.模糊查询like语法不支持导致

Error -2007: 第 7 行, 第 53 列["]附近出现错误: 
语法分析出错

解决方案:
AND name LIKE “%”‘宁海’“%”
替换为 AND regexp_like(name,‘宁海’)

你可能感兴趣的:(数据库,mysql,达梦数据库,MySQL切换到达梦)