MySQL中ALTER修改主键类型会重置自增值?版本差异原因咨询
问题:MySQL 5.7修改自增主键类型后自增值重置为0,8.0版本无此现象
测试场景与现象
MySQL 5.7.32-log版本操作
- 创建测试表:
CREATE TABLE test_table ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) );
- 插入测试数据:
INSERT INTO test_table (name) VALUES ('Alice'), ('Bob');
- 修改主键字段类型:
ALTER TABLE test_table MODIFY id BIGINT(30);
执行后通过SHOW CREATE TABLE test_table;查询,发现自增起始值被重置为0。
MySQL 8.0.39-0ubuntu0.22.04.1版本操作
执行完全相同的步骤后,自增起始值保持原有数值,未出现重置情况。
结论:这是MySQL版本间的特性差异,非Bug也非可配置项
在MySQL 5.7中,修改自增列的数据类型时,存储引擎会重新初始化自增计数器,导致其重置为0。这是该版本处理ALTER TABLE修改自增列类型的固有逻辑,并非Bug。
而MySQL 8.0对这一逻辑做了优化,在修改自增列类型时会保留当前的自增计数器值,避免了不必要的重置。
该行为无法通过配置项调整,属于不同版本的特性差异。
内容的提问来源于stack exchange,提问作者zikui zhou
相关产品推荐
相关产品推荐

