MySQL转到达梦数据库【目前】遇到过问题及解决方案

MySQL数据转到达梦数据库"目前"遇到的问题:

SET IDENTITY_INSERT 表名 ON:表示开启对标识列显示值插入模式,允许对标识列显示值进行手动插入数据。
SET IDENTITY_INSERT 表名 OFF:表示关闭对标识列显示值的插入操作,标识列不允许手动插入显示值。

  • 插入操作insert注意自增列无法赋值,例如 insert into T1(id,name,age) values(1,'joker',18),当id列设置自增时,达梦数据库会报错,无法赋值自增列

    • 解决方法1:SET IDENTITY_INSERT T1 ON;注意这个ON和OFF是成对出现,即上述例子可以这样写
      • SET IDENTITY_INSERT T1 ON; insert into T1(id,name,age) values(1,'joker',18);SET IDENTITY_INSERT T1 OFF;
    • 解决方案二:插入时不传入idinsert into T1(name,age) values('joker',18)
  • 查询操作:遇到的较多的是 distinct 问题(可以引申到order by等问题),达梦不允许大字段排序,distinct 出现在select 语句中,select查询出的列中存在clob blob text 等类型会报错。

    • 解决方案一:非必要情况下,如果可以,将表中字段类型为text的,更改为varchar,需要注意的是varchar最长是8188字节
    • 解决方案二:确实此字段必须要超过8188字节长度,继续用text,那就需要优化SQL,在对重复结果集没有强烈要求情况下,将distinct 改为 all或者直接去掉distinct

【参考:达梦官方网站

posted @ 2021-10-13 20:27  桃子dev  阅读(1383)  评论(0编辑  收藏  举报