版本=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 中测试时,自动增量没有改变。
我想知道这是配置项、功能还是错误。
当您执行
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
^^^