MySQL 에서 테이블의 필드(보통 ID)를 auto increment 로 설정하면 행이 하나씩 추가할때 자동 증가하게 된다.
그런데, 다음 테이블에서 'id' 값을 0 번부터 시작하기 위해서, AUTO_INCREMENT 를 0 으로 설정한다. (보통은 1번부터 시작하겠지만 0 번에 해당하는 초기값으로 설정되어 있어야 하는 상황이다.)
CREATE TABLE 'id_tbl`
`id` int(11) NOT NULL AUTO_INCREMENT
`flag` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
INSERT INTO `Users` VALUES (0, 10), (1, 20);
위의 insert 문에서 0 번과 1번 id 값으로 insert 를 하려고 하는데, 아마 중복 오류가 나올것이다. 이때, 다음과 같이 0 번 값만 insert 하고 id_tbl 테이블을 확인해보면 id 값이 1 로 되어 있는 것을 확인할 수 있다.
INSERT INTO `Users` VALUES (0, 10);
mysql>select * from id_tbl;
| id | flag
|1 | 10
이때의 해결 방법은 다음 쿼리문을 실행하면 원하는 결과를 얻을 수 있다.
mysql> set SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
mysql> INSERT INTO `Users` VALUES (0, 10);
mysql> INSERT INTO `Users` VALUES (1, 20);
mysql>select * from id_tbl;
| id | flag
| 0 | 10
| 1 | 20
자동 증가하는 값도 AUTO_INCREMENT_OFFSET 설정으로 변경이 가능하다.
/etc/my.cnf 에서 서버 설정부분에다가 추가한다.
auto-increment-increment = 100
auto-increment-offset = 1
* auto-increment-increment : 자동증가컬럼(auto-increment 설정된 컬럼) 의 값이 단위 숫자만큼 증가. ex) 101, 201, 301, ...
* auto-increment-offset : 자동증가컬럼의 시작값.
도움받은 곳 :
http://stackoverflow.com/questions/10753505/mysql-id-auto-increment-doesnt-starts-from-0
'Engineering > DB' 카테고리의 다른 글
jedis sample source (0) | 2014.10.08 |
---|---|
MySQL 서버 설정값들 (0) | 2014.06.11 |
PPAS 9.2 설정 및 관련 자료 정리 (0) | 2014.01.08 |
MSSQLServer 에서 MySQL 로 DB migration 시 참고 (0) | 2013.09.03 |
mysql create procedure / function 에서 발생하는 오류들 (2) | 2013.07.10 |