修改表字段报错:4016

【 使用环境 】测试环境
【 OB or 其他组件 】OBSERVER,1-1-1架构
【 使用版本 】4.3.1
【问题描述】测试表:

 CREATE TABLE `vvv` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `ttt` varchar(64) NOT NULL DEFAULT '' COMMENT 'tttttt',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uniq_ttt` (`ttt`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='ttt';

报错:

ERROR 4016 (HY000): Internal error
[127.1.0.199:2882] [2025-04-09 09:47:34.956081] [YB420B7BF3C7-00062A18D71F884B-0-0]

主键不支持修改类型吗?

复现步骤:
1:创建表【新表没有数据,也没有任何操作】
2:修改表主键ID类型
3:报错

用obdiag 诊断工具巡检一下,把巡检报告发出来看看

https://www.oceanbase.com/docs/common-obdiag-cn-1000000002488230

这个只装了observer服务,没有装其它工具,这个日志文件是根据traceid过滤出来的,现象是有的表可以修改,有的表就不行

修改语句是什么样的

看看这个KBA: https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000616407?back=kb

ALTER TABLE vvv MODIFY id bigint(30) unsigned NOT NULL AUTO_INCREMENT;

为了复现这个问题,这个表是新创建的,没有任何数据插入和修改。
步骤如下:
1:创建表
2:修改表主键ID类型
3:报错

Truncate Table后在重建呢


这边测试是没问题的,建议你先升级下版本431版本不建议使用

truncate 后也不行。

我升级下版本吧,不确定啥原因,有的表可以,有的表不行

修改表语句这样可以:
第一步:ALTER TABLE vvv MODIFY id bigint(30) unsigned;
第二步:ALTER TABLE vvv MODIFY id bigint(30) unsigned NOT NULL AUTO_INCREMENT;
执行成功。。。