【 TiDB 使用环境】生产环境 /测试/ Poc
测试环境
【 TiDB 版本】
V4.0.9
【复现路径】做过哪些操作出现的问题
应该是有开发直接插入了最大的值到自增ID列,把 AUTO_INCREMENT
列的值更新为最大值,我们怎么重置表的AUTO_INCREMENT
值。
【遇到的问题:问题现象及影响】
表结构如下:
CREATE TABLE
dcs_option_20230111(
option_idint(11) NOT NULL AUTO_INCREMENT,
survey_idint(11) DEFAULT '0',
template_idint(11) DEFAULT '0' COMMENT '模板id',
question_idint(11) DEFAULT '0',
option_valuetext DEFAULT NULL,
option_identity varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT '' COMMENT '选项标识', PRIMARY KEY (
option_id), KEY
question_id (
question_id), KEY
survey_id (
survey_id), KEY
option_identity (
option_identity) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
有开发做了指定了option_id
的插入了一条SQL,导致option_id
变为最大值,不指定数值无法插入。
插入语句如下:
INSERT INTO
dcs_option_20230111 (
option_id,
survey_id,
template_id,
question_id,
option_value) VALUES ('2147483647','12689831','0','169791211','选项1');
此时的建表语句变为:
CREATE TABLE
dcs_option_20230111(
option_idint(11) NOT NULL AUTO_INCREMENT,
survey_idint(11) DEFAULT '0',
template_idint(11) DEFAULT '0' COMMENT '模板id',
question_idint(11) DEFAULT '0',
option_valuetext DEFAULT NULL,
option_identity varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT '' COMMENT '选项标识', PRIMARY KEY (
option_id), KEY
question_id (
question_id), KEY
survey_id (
survey_id), KEY
option_identity (
option_identity) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin AUTO_INCREMENT=2147513648
此时我们不指定option_id
无法插入数据,并报如下的错:
错误代码: 1062 Duplicate entry '2147483647' for key 'PRIMARY'
使用SQL:
ALTER TABLE dcs_option_20230111 AUTO_INCREMENT= 566167158;
并且重启了TiDB组件,建表语句也还是原本的最大值,能有其他什么SQL或者办法重置该值吗?
【资源配置】
【附件:截图/日志/监控】