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;
- 解决方案二:插入时不传入id
insert into T1(name,age) values('joker',18)
- 解决方法1:
-
查询操作:遇到的较多的是
distinct
问题(可以引申到order by
等问题),达梦不允许大字段排序,distinct 出现在select
语句中,select查询出的列中存在clob blob text 等类型会报错。- 解决方案一:非必要情况下,如果可以,将表中字段类型为text的,更改为
varchar
,需要注意的是varchar
最长是8188字节 - 解决方案二:确实此字段必须要超过8188字节长度,继续用
text
,那就需要优化SQL,在对重复结果集没有强烈要求情况下,将distinct
改为all
或者直接去掉distinct
- 解决方案一:非必要情况下,如果可以,将表中字段类型为text的,更改为
【参考:达梦官方网站】