带有auto_random属性的表无法执行DDL

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:4.0.1
  • 【问题描述】:
    背景:
    1.集群从v2.0逐个版本升级到的v4.0.1
    2.tidb-server开启auto random后重启生效
    3.版本信息如下

    4.表结构如下
    CREATE TABLE bid_request_imp (
    id bigint(20) NOT NULL /*T![auto_rand] AUTO_RANDOM(5) */ COMMENT ‘自增id’,
    auctionid varchar(50) DEFAULT NULL COMMENT ‘竞拍id’,
    tagid varchar(32) DEFAULT NULL COMMENT ‘广告位标识’,
    impid varchar(32) DEFAULT NULL COMMENT ‘广告位id’,
    frame int(11) DEFAULT NULL COMMENT ‘帧序’,
    adtype int(11) DEFAULT NULL COMMENT ‘广告类型’,
    adtemplate varchar(100) DEFAULT NULL COMMENT ‘广告版位’,
    bidfloor float DEFAULT NULL COMMENT ‘底价’,
    bidfloorcur varchar(20) DEFAULT NULL COMMENT ‘币种’,
    w int(11) DEFAULT NULL COMMENT ‘宽’,
    h int(11) DEFAULT NULL COMMENT ‘高’,
    pos int(11) DEFAULT NULL COMMENT ‘位置’,
    sequence int(11) DEFAULT NULL COMMENT ‘刷次’,
    datachange_lasttime timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT ‘更新时间’,
    PRIMARY KEY (id),
    KEY ix_auctionid (auctionid,impid,frame),
    KEY ix_DataChange_LastTime (datachange_lasttime)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT=‘广告竞价请求广告位表’

返回结果:
mysql> alter table bid_request_imp modify adtemplate varchar(110) DEFAULT NULL COMMENT ‘广告版位’;
ERROR 8216 (HY000): Invalid auto random: adding/dropping/modifying auto_random is not supported

提问
我在新建的v4.0.4版本的tidb中测试可以正常执行DDL,这是否是v4.0.1的bug

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

  1. 请问,这是新建一个空表,还是需要修改之前的旧表?
  2. https://github.com/pingcap/tidb/issues/17793 4.0 存在一些bug

修改之前的表

  1. auto random 功能 4.0.3 正式使用,之前的版本都是实验性质,所以建议升级到 4.0.3 以上版本使用。
  2. auto random 有限制, 为保证可隐式分配的次数最大,从 v4.0.3 开始, AUTO_RANDOM 列类型只能为 BIGINT,不建议这样使用。

  1. 请参考文档
    https://docs.pingcap.com/zh/tidb/stable/auto-random#auto_random-span-classversion-mark从-v310-版本开始引入span

好的,多谢。我们尽快升级4.0.3+版本

好的,注意限制,多谢。