【TiDB 使用环境】测试环境验证
【TiDB 版本】8.5.5
【部署方式】云上部署(华为云)自建
【集群节点数】3kv 3pd 3tidb
【问题】因现有表的id使用auto_increment,存在热点问题,计划使用auto_random来替代auto_increment,但在验证时提示:ERROR 8216 (HY000): Invalid auto random: auto_random can only be converted from auto_increment clustered primary key
【表结构】
CREATE TABLE test_auto_random (
id bigint AUTO_INCREMENT COMMENT ‘主键ID’,
sendTm timestamp NOT NULL COMMENT ‘发送时间’,
data varchar(100) DEFAULT NULL,
PRIMARY KEY (id,sendTm) /*T![clustered_index] CLUSTERED */
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin AUTO_INCREMENT=1021002080801 COMMENT=‘记录表2’
PARTITION BY RANGE (UNIX_TIMESTAMP(sendTm)) (
PARTITION p20260214 VALUES LESS THAN (1770998400),
PARTITION p20260215 VALUES LESS THAN (1771084800)
);
【执行日志】
mysql> SET SESSION tidb_allow_remove_auto_inc = ON;
Query OK, 0 rows affected (0.00 sec)
mysql> SET SESSION tidb_allow_remove_auto_inc = 1;
Query OK, 0 rows affected (0.00 sec)
mysql> ALTER TABLE test_auto_random MODIFY COLUMN id BIGINT NOT NULL AUTO_RANDOM(5) COMMENT ‘主键ID’;
ERROR 8216 (HY000): Invalid auto random: auto_random can only be converted from auto_increment clustered primary key
