MySql切换到达梦数据库,各种问题解决记录
参考官方文档:
1. 关键字导致的报错:如ref,,top,等
Error -2007: 第 1 行, 第 117 列[ref]附近出现错误:
语法分析出错
解决方案:修改关键字即可
2. 查询列包含大字段,导致的报错
Error -2685: 第42 行附近出现错误:
试图在blob或者clob列上排序或比较
解决方案:需要将数据库参数设置为1,
之后数据库便支持查询列,以及、ORDER BY、分析函数和集函数支持对大字段进行处理。
3. 和using函数不支持导致的报错
Error -2007: 第 32 行, 第 85 列[using]附近出现错误:
解决方案:
找到错误语句:(e. using gbk) asc
该功能是为了按照拼音首字母排序,
替换为 (e.,‘ = ’)即可解决。
4. where条件后的字段值使用双引号导致
Error -2111: 第36 行附近出现错误:
无效的列名[topic]
解决方案:
字段名是小写的情况下,字段值必须使用单引号,因为双引号会把值当成列名。所以需要把双引号改为单引号,
如:and d.=“topic” 改为 ‘topic’
5. 自增主键导致,表设置了主键自增,但是语句又设置了主键值
Error -2723: 仅当指定列列表,且SET IDENTITY_INSERT为ON时,才能对自增列赋值
解决方案:
需要考虑是否分表,如果是分表,去掉表的自增;如果是普通单表,可以去掉自制定的主键值。
注意:如果想直接获取自增主键ID的值,可以在sql方法上加上一下两个属性:
useGeneratedKeys="true" keyProperty="id"
6. 使用单引号修饰查询列别名导致
Error -2007: 第 4 行, 第 220 列[']附近出现错误:
语法分析出错
解决方案:查询列可以用双引号修饰,也可以不用引号修饰,但不能使用单引号,因为单引号是用来修饰字段值的
如b.id AS ‘’ 必须改为 b.id AS
7. 日期运算语法不支持&导致
Error -2007: 第 7 行, 第 99 列[7]附近出现错误:
语法分析出错
解决方案:
获取七天前的时间:(now(), 7 day ),
获取30分钟后的时间:(NOW() , 30 )
替换为 ((), -7) , + 30 / 24 / 60
8. 语法不支持导致
Error -2207: 第24 行附近出现错误:
无法解析的成员访问表达式[group_concat]
解决方案:
(r.)替换为 (r.,‘,’)
9. 修改语句的列重复导致
Error -2114: 第77 行附近出现错误:
重复的列名[invalid]
解决方案:去除多余的查询列 即可
10. 日期转换格式语法不支持导致
Error -2007: 第 5 行, 第 128 列[10]附近出现错误:
语法分析出错
解决方案:
(, ‘%Y-%m-%d %H:%i’)
替换为 (, ‘YYYY-MM-:MI’) 即可
11. 日期运算语法不支持导致
解决方案:
(now(), )