首批通过分布式安全可靠测评,为关键业务系统打造
OceanBase 数据库 V4.2.5 版本 MySQL 租户,执行 alter xx modify column DBID BIGINT auto_increment not null COMMENT 'xx' 报错 ERROR 4016
更新时间:2026-05-21 09:16
问题现象
OceanBase 数据库 V4.2.5 及之后版本对自增列执行 alter table table_name modify column 时报错 -4016,rootservice.log 中打印日志 only one auto-increment column permitted。
关键日志含有 only one auto-increment column permitted 信息,完整日志如下。
rootservice.log:[2024-12-17 16:56:26.288800] WDIAG [RS] update_single_column (ob_table_sql_service.cpp:1119) [24463][DDLQueueTh0][T0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=9][errcode=-4016] only one auto-increment column permitted(ret=-4016)
rootservice.log:[2024-12-17 16:56:26.288820] WDIAG [RS] update_single_column (ob_ddl_operator.cpp:4473) [24463][DDLQueueTh0][T0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=19][errcode=-4016] failed to update single column(ret=-4016)
问题原因
一张表只能有一个自增列,但当前版本若自增列是唯一索引的一部分时,唯一索引里该列的自增列属性标记被漏去除,导致会误报错不允许存在多个自增列。
问题的风险及影响
对自增列的修改列 DDL 将会失败。
影响租户
影响 OceanBase 数据库中的 SYS 租户和 MySQL 租户,对于 Oracle 租户无影响。
适用版本
OceanBase 数据库 V4.2.x 版本、V4.3.x 版本。
注意
OceanBase 数据库 V4.2.1 版本无此问题。
解决方法
升级至问题已修复版本。目前已修复的版本包括 OceanBase 数据库企业版 V4.2.5 GA(oceanbase-4.2.5.0-100000082024102022)、V4.3.5 BP1。
规避方式
对自增列执行修改列的DDL时需要先删除唯一索引,删除后即可执行对自增列的修改 DDL,执行完毕后再建立回唯一索引。