DM8 Cause: dm.jdbc.driver.DMException: 仅当指定列列表,且SET IDENTITY_INSERT为ON时,才能对自增列赋值

懒驴 2022年01月18日 4,822次浏览

达梦数据库添加数据时,报错误,错误如下:

Error updating database. Cause: dm.jdbc.driver.DMException: 仅当指定列列表,且SET IDENTITY_INSERT为ON时,才能对自增列赋值
The error may exist in file [E:\idea_workspace\VideoMonitor_DM\target\classes\mappers\db_DM8\monitor\UserInfoDMMapper.xml]
The error may involve com.web.system.mapper.db_DM8.monitor.IUserInfoDMMapper.addUserInfoDM-Inline
The error occurred while setting parameters
SQL: insert into "monitor_DM"."user_info" ( "id","userid","user_name","user_password","user_head_img","register_time","user_state","user_type","user_token","remark" ) values ( ?,?,?,?,?,?,?,?,?,? );
Cause: dm.jdbc.driver.DMException: 仅当指定列列表,且SET IDENTITY_INSERT为ON时,才能对自增列赋值
; 仅当指定列列表,且SET IDENTITY_INSERT为ON时,才能对自增列赋值; nested exception is dm.jdbc.driver.DMException: 仅当指定列列表,且SET IDENTITY_INSERT为ON时,才能对自增列赋值

出现错误原因:

1.自增长的SQL表里面插入指定ID的数据的时候,会禁止你操作;
2.插入数据时,自增长列是系统自动处理,不需要指定数值,也指定不了。只有将IDENTITY_INSERT 为 ON 时插入数据时,自增长列才可以指定一个值。

解决方法

IDENTITY_INSERT设置为ON

SET IDENTITY_INSERT 表名 ON;
insert 表名 value(*xx*,* xx*,*xx *);
SET IDENTITY_INSERT 表名 OFF;
commit;

注意,插入数据时最后记得commit,达梦数据库需要手动提交数据。