auto_increment改为auto_random报错

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】
centos7.5

【概述】 场景 + 问题概述
auto_increment改为auto_random报错:
ERROR 8216 (HY000): Invalid auto random: auto_random can only be converted from auto_increment clustered primary key

【应用框架及开发适配业务逻辑】
业务大批量insert和update时,auto_increment主键字段有热点问题,需要将存量表改为auto_random

【背景】 做过哪些操作

【现象】 业务和数据库现象
ERROR 8216 (HY000): Invalid auto random: auto_random can only be converted from auto_increment clustered primary key

【问题】 当前遇到的问题
ERROR 8216 (HY000): Invalid auto random: auto_random can only be converted from auto_increment clustered primary key

【业务影响】
热点问题无法解决

【TiDB 版本】
tidb v4.0.13

【附件】 相关日志及监控(https://metricstool.pingcap.com/)


若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

select表看一下,是不是值不对?

目前只有一条数据

试下设置 tidb_allow_remove_auto_inc

能发一下脚本么?我本地试一下

另外,有没有可能是这个原因:

目前在 TiDB 中使用 AUTO_RANDOM 有以下限制:

  • 该属性必须指定在整数类型的主键列上,否则会报错。此外,当配置项 alter-primary-key 的值为 true 时,即使是整型主键列,也不支持使用 AUTO_RANDOM

create table t1(id bigint not null auto_increment primary key,name varchar(20));
insert into t1 select null,‘sdfsdfs’;
set @@tidb_allow_remove_auto_inc=on;
alter table t1 modify id bigint(32) not null auto_random;
谢谢了

当配置项 alter-primary-key 的值为 true 时,即使是整型主键列,也不支持使用 AUTO_RANDOM

请问改成什么类型可以

应该是这个限制导致的。不支持alter

我在测试环境可以,5.3的

感觉和文档冲突呢

我之前有一次修改成功了

后来再修改就不成功了

4.0.x和5.x的文档不一样

我看的是5.3的文档呀

那确实是和文档不一致了啊

没有结论?到底是能改还是不能改呢?

我看到在4.0.13上除了一个优化:
支持将列属性 AUTO_INCREMENT 变更为 AUTO_RANDOM
https://github.com/pingcap/tidb/pull/24608/checks
但在5.4版本上实测,还是存在如上的问题。
mysql> alter table test_7 modify id bigint(32) not null auto_random;
ERROR 8216 (HY000): Invalid auto random: auto_random can only be converted from auto_increment clustered primary key

不能改,想要改成random就得进行表替换

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。