MySQL中使用ALTER修改主键类型会不会把自增值重置为0?

问题描述 投票:0回答:1

版本=5.7.32-log

我使用像这样的mysql语句来测试。

    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);

更改了表格结构

可以看到自动增量变为0。

我尝试在mysql手册和google中搜索这个,没有相关答案。

更重要的是,当我在 8.0.39-0ubuntu0.22.04.1 中测试时,自动增量没有改变。

我想知道这是配置项、功能还是错误。

mysql
1个回答
0
投票

当您执行

ALTER TABLE
时,您省略了
AUTO_INCREMENT
选项。

这使得该列只是一个

BIGINT
,没有
AUTO_INCREMENT
行为。

在这种情况下,下一个自增的值是不相关的,元数据显示0。

更改数据类型时,应确保包含

AUTO_INCREMENT
选项:

ALTER TABLE test_table MODIFY id BIGINT AUTO_INCREMENT;

SHOW CREATE TABLE test_table;

输出:

CREATE TABLE `test_table` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
                              ^^^
© www.soinside.com 2019 - 2024. All rights reserved.