现象描述
我们有时候会遇到自增列赋值的问题,尤其是当之前使用的是Mysql 时,在往达梦或者其他数据库迁移后,如果目的数据库无法进行自增列赋值,之前的应用程序怎么办?
应用中可能遇到报错:不可修改自增列
处理方法
修改表结构,不再使用自增列,而是使用普通列,同事设置默认值为序列。
原因:
1. 自增列赋值本身是一个mysql 不严谨的用法,自增列本身应该有系统管理,不应该可以赋值
2. 虽然在其他数据库,如达梦数据库上,可以通过相关开关来开启自增列辅助的功能,但是这个功能默认是关闭的,也应该是关闭的
3. 那么在之前的Mysql 应用场景中,我们只需要通过普通列+ 序列默认值的方式,就可以解决该问题。
具体例子如下:
Mysql 建表如下:
create table test3
(
id int auto_increment not null,
str varchar(2),
key(id)
);
在DM 应该先手动迁移该表结构,在迁移数据:
create SEQUENCE seq_auto_increment_test3 INCREMENT by 1 START WITH 1 ;
create table test3
(
id int default seq_auto_increment_test3.nextval primary key,
str varchar(2)
);
这样变更的表结构,“自增列”的赋值属性,包括其他用法,是基本一致的,可以绕过前述问题,保证应用正常。