문제

자동화 된 승인 테스트의 경우 삽입물이 ID = 1으로 시작하기를 원합니다. 테이블에서 모든 행을 삭제 한 후 (테이블에서 모든 행을 삭제 한 후) 하나의 PC (xp 32bit, mysql 5.1.something)에서 이것을 달성했습니다.

이제 새 PC (Windows 7 64 비트, MySQL 5.1.42)를 설정 했으며이 명령에는 영향을 미치지 않는 것 같습니다. auto_increment 값이 0으로 다시 변경되지 않았다는 Information_schema.tables 테이블에서 알 수 있습니다. 해당 테이블의 값을 직접 변경하려고하면 액세스가 'root'@'localhost'에 거부된다고 들었습니다. 이것은 아마도 내 문제에 대한 힌트를 주는가?

다른 stackoverflow 사람들은 "Tablemename에서 Truncate"가 좋은 대안이라고 제안했습니다. 이것이 효과가 있다고보고하게되어 기쁩니다. 그러나 "Alter Table"명령이 Auto_Increment를 재설정하지 않는 이유를 아는 사람이 있습니까?

감사!

도움이 되었습니까?

해결책

왜 그것이 한 서버에서 작동하지 않았고 다른 서버에서 작동하지 않는지 확실하지 않지만 MySQL 매뉴얼 상태 (인용, 강조 광산) :

값의 값을 변경합니다 AUTO_INCREMENT 새로운 행에 사용되는 반대는 다음을 수행하십시오.

ALTER TABLE t2 AUTO_INCREMENT = value;

카운터를 이미 사용 된 것보다 적은 값으로 재설정 할 수 없습니다..
Myisam의 경우 값이 현재 최대 값보다 작거나 동일하다면 AUTO_INCREMENT 열, 값은 현재 최대 + 1로 재설정됩니다.
innodb의 경우 값이 열의 현재 최대 값보다 낮은 경우 오류가 발생하지 않고 현재 시퀀스 값이 변경되지 않습니다.

아마도 그게 문제의 원인일지도 모릅니다 : 당신은 auto_increment 0으로 다시 카운터링하지만 이미 해당 값보다 높습니다. 이미 사용 된 값보다 적은 값으로 재설정 할 수 없으므로 작동하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top