2010-01-09 2 views
1

자동화 된 인수 테스트를 위해 삽입이 id = 1로 시작하도록합니다. (테이블에서 모든 행을 삭제 한 후) 하나의 PC (XP 32 비트, mysql 5.1.something)에서 "alter table tableName auto_increment = 0"을 사용하여이 작업을 수행했습니다.Mysql 5.1.42 alter table auto_increment = 0, truncate does not do

이제 새로운 PC (Windows 7 64bit, mysql 5.1.42)를 설치하고 있는데이 명령은 아무 효과가없는 것 같습니다. information_schema.tables 테이블에서 auto_increment 값이 0으로 다시 변경되지 않음을 알 수 있습니다. 단지 계속 올라갑니다. 해당 테이블의 값을 직접 변경하려고하면 'root'@ 'localhost'에 대한 액세스가 거부됩니다. 이것은 아마도 내 문제에 대한 힌트를 주는가?

다른 stackoverflow 사람들은 "truncate from tableName"이 좋은 대안이라고 제안했습니다. 나는 이것이 효과가 있다는 것을보고 행복하다. 하지만 "alter table"명령이 auto_increment를 재설정하지 않는 이유를 아는 사람이 있습니까?

감사합니다.

답변

4

확실하지가 하나 개의 서버에 근무, 다른 작동하지 않는 이유하지만 MySQL manual states(인용, 강조 광산)는 :

AUTO_INCREMENT 카운터의 값을 변경하려면 새 행에 대한 을 사용, 이렇게 :

ALTER TABLE t2 AUTO_INCREMENT = value; 

당신은 을 그 어떤보다 작거나 같은 값으로 카운터를 재설정 할 수 없습니다 이미 사용되었습니다. 값이보다 작거나 최대 값 AUTO_INCREMENT 열의 현재 에 같으면 의 MyISAM 들어
는 상기 값은 현재의 최대 더한로 리셋된다.
InnoDB의 경우, 값 이 열의 현재 최대 값 보다 작 으면 오류가 발생하지 않고 현재 시퀀스 값이 변경되지 않습니다. 0으로 다시 auto_increment 카운터를 넣어하려고하지만 이미 값보다 - 그리고 당신의 값 이하의 값으로 재설정 할 수 없습니다 같이

아마 그 문제의 원인이다 이미 사용되었지만 작동하지 않습니다.

+0

감사합니다. 필자의 테이블은이 설치에서 myISAM을 사용하고있는 것으로 보인다. – John

+0

후, OK ;; 천만에요 :-) –