新建索引的时候报错:Specified key was too long; max key length is 12288 bytes

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】
【遇到的问题】
【复现路径】做过哪些操作出现的问题
【问题现象及影响】

【附件】

请提供各个组件的 version 信息,如 cdc/tikv,可通过执行 cdc version/tikv-server --version 获取。


创建索引的时候提示这个错误

看下这个参数吧 max-index-length
https://docs.pingcap.com/zh/tidb/stable/tidb-configuration-file#max-index-length


设置的已经是最大值了

提供下表结构吧

CREATE TABLE rbac_datascope (
datascopeid decimal(19,0) NOT NULL COMMENT ‘序列号’,
createdate datetime(6) DEFAULT NULL COMMENT ‘创建时间’,
createuserid varchar(1020) DEFAULT NULL COMMENT ‘创建人id’,
owneruserid varchar(1020) DEFAULT NULL COMMENT ‘所有用户id(保留字段)’,
partitionid varchar(256) DEFAULT NULL COMMENT ‘分区id(保留字段)’,
schemaname varchar(64) DEFAULT NULL COMMENT ‘库名(保留字段)’,
setid varchar(1020) DEFAULT NULL COMMENT ‘集合id(保留字段)’,
structureid varchar(128) DEFAULT NULL COMMENT ‘所有机构id(保留字段)’,
tenantid varchar(128) DEFAULT NULL COMMENT ‘租户id(保留字段)’,
updatedate datetime(6) DEFAULT NULL COMMENT ‘更新时间’,
updateuserid varchar(1020) DEFAULT NULL COMMENT ‘更新用户id’,
description varchar(4000) DEFAULT NULL COMMENT ‘(未使用)’,
kind varchar(256) DEFAULT NULL COMMENT ‘(未使用)’,
name varchar(1024) DEFAULT NULL COMMENT ‘(未使用)’,
typeid varchar(1024) DEFAULT NULL COMMENT ‘(未使用)’,
accessmode varchar(1020) DEFAULT NULL COMMENT ‘访问权限类型’,
caseid decimal(19,0) DEFAULT NULL COMMENT ‘作用域对象id’,
casetype varchar(1020) DEFAULT NULL COMMENT ‘作用域类型’,
dimensionid varchar(1020) DEFAULT NULL COMMENT '数据范围(机构、渠道、产品条线、产品分类、产品、功能组)id ',
dimensionkind varchar(1020) DEFAULT NULL COMMENT ‘数据范围(机构、渠道、产品条线、产品分类、产品、功能组)标识’,
dimensionname varchar(1020) DEFAULT NULL COMMENT ‘数据范围(机构、渠道、产品条线、产品分类、产品、功能组)名称’,
dimensiontype varchar(1020) DEFAULT NULL COMMENT ‘数据范围维度类型’,
dirtyflag varchar(1020) DEFAULT NULL COMMENT ‘脏标志’,
approvestatus varchar(1020) DEFAULT NULL COMMENT ‘审核状态’,
batchid varchar(1020) DEFAULT NULL COMMENT ‘审核批次id’,
dimensionpath varchar(1020) DEFAULT NULL COMMENT ‘数据权限维度路径’,
PRIMARY KEY (datascopeid) /*T![clustered_index] NONCLUSTERED */,
KEY idx_rbac_datascope_dimensionkind (dimensionkind),
KEY idx_rbac_datascope_dimensionname (dimensionname),
KEY idx_rbac_datascope_casetype (casetype),
KEY idx_rbac_datascope_dimensiontype (dimensiontype),
KEY idx_rbac_datascope_caseid (caseid),
KEY idx_rbac_datascope_dimensionid (dimensionid),
KEY idx_rbac_datascope_dimensionpath (dimensionpath)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T!

这字段类型不合理啊。。。为啥一个状态值都是varchar(1020)

估计是按照最大来的,这种得修改字段类型了吧

嗯,浪费磁盘空间不说肯定也超限制了

是的呀,一直都没有注意过

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