반응형
MariaDB AUTO_INCREMENT 최대값(부호 없음)으로 점프
편집: 그것은 버그인 또는 어플리케이션이었다.
auto_increment 값이 최대 int에 도달하기 위해 수십억 개의 값을 점프하는 원인은 무엇입니까?
델의 코어 테이블은int unsigned auto_increment
[ Primary Key ]카람을 표시합니다.오늘은 4294967295까지 모든 값을 건너뛰었습니다.
공격 행을 삭제하고 실행함으로써 이 문제를 해결할 수 있었습니다.
ALTER TABLE [table] AUTO_INCREMENT = [new value];
어떻게, 왜 그런 일이 일어났는지 설명할 수 없어요
당사의 환경은 PHP/Apache의 MariaDB 10.2.27입니다.
임의의 INSERT는 높은 값을 지정할 수 있으며, 이는 암묵적으로 다음 자동 증분 값을 진행합니다.즉, 테이블의 자동 인크리먼트는 테이블에 현재 삽입되어 있는 최대값보다 작지 않습니다.클라이언트는 INSERT에 값을 지정하는 것만으로 자동 인크리먼트메커니즘을 덮어쓸 수 있습니다.
데모:
mysql> create table mytable (id int unsigned auto_increment primary key);
mysql> insert into mytable (id) values (DEFAULT);
Query OK, 1 row affected (0.01 sec)
ID 값 1이 삽입되어 있어야 하므로 다음 AI는 2가 됩니다.
mysql> show create table mytable\G
*************************** 1. row ***************************
Table: mytable
Create Table: CREATE TABLE `mytable` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4
큰 값을 지정하면 그에 따라 AI가 업데이트됩니다.
mysql> insert into mytable (id) values(1000000000);
Query OK, 1 row affected (0.01 sec)
mysql> show create table mytable\G
*************************** 1. row ***************************
Table: mytable
Create Table: CREATE TABLE `mytable` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1000000001 DEFAULT CHARSET=utf8mb4
부호 없는 최대 int 값 2-1보다 큰 값은 해당32 값으로 잘립니다.
mysql> insert into mytable (id) values(1000000000000);
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> show create table mytable\G
*************************** 1. row ***************************
Table: mytable
Create Table: CREATE TABLE `mytable` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4294967295 DEFAULT CHARSET=utf8mb4
누군가 큰 값을 삽입한 게 틀림없어요4294967295보다 큰 값은 4294967295로 잘리고 이후 AI 시퀀스를 사용하려고 하면 실패합니다.
언급URL : https://stackoverflow.com/questions/59400794/mariadb-auto-increment-jump-to-max-unsigned-int
반응형
'programing' 카테고리의 다른 글
Python only mysql.connector를 maria 호환 API로 대체DB (0) | 2022.10.01 |
---|---|
JavaScript에서 단일 따옴표( ')를 이스케이프하려면 어떻게 해야 합니까? (0) | 2022.10.01 |
PHP가 명령줄에서 입력을 기다립니다. (0) | 2022.10.01 |
자바 주석 (0) | 2022.10.01 |
JavaScript에서 배열에 다른 배열 요소가 포함되어 있는지 확인합니다. (0) | 2022.10.01 |