2010-07-29 5 views
1

필자는 autoincrement 필드가있는 테이블을 가지고 있습니다. 예를 들어 1,2,3 값을 가지고 있습니다. 4를 삽입하고 삭제하면 다음이 정상적으로됩니다. 5를 삭제하고 오랜 시간이 지나면 1을 말합니다. 일주일에 새 레코드를 삽입하면 다음 레코드가 다시 나타납니다. 4.MySQL 자동 증가 문제

누가 이런 일이 일어 났는지 말해 줄 수 있습니까? 오랜 시간이 지난 후에이 테이블의 마지막 삽입 된 ID를 가져 오면 왜 새 레코드를 삽입할까요? 삭제 된 레코드를 고려해야합니다.

PS :이 내가 시간

+3

테이블 위에서 실행되는 CRON 작업은 무엇입니까? –

+0

나는 cron을 직접 시작하지 않았지만 이것은 유료 호스팅에 있기 때문에 조정할 가능성이 있습니까? – Centurion

+1

누락되거나 날짜가 잘못된 AUTO_INCREMENT 값이있는 데이터베이스가 언제든지 백업/복원 될 수 있습니까? 또는 AUTO_INCREMENT 컬럼이 다중 컬럼 인덱스의 일부입니까? [AUTO_INCREMENT 사용하기] (http://dev.mysql.com/doc/refman/5.1/en/example-auto-increment.html) - 특히 다중 컬럼 인덱스 부분을 참조하십시오. – Mike

답변

5

테이블 컬럼에 대한 마지막 자동 증가 값은 메모리에만 저장되는 짧은 기간에 그 일을하고 때 확인을 작동하고, 단지 오랜 시간 후에 발생합니다. 그것은 테이블이나 다른 것에 쓰여지지 않습니다. 따라서 서버를 다시 시작하면 (백업용) 마지막 증분 값 (5)이 손실되고 mysql은 테이블 (4)에있는 마지막 값을 검색합니다.

+0

예, 맞습니다. 믿을 수없고 localhost에서 테스트했습니다. 감사합니다.하지만이 문제로 인해 서버를 다시 시작한 후에 삭제 된 ID를 유지할 수있는 해결책이 있습니까? – Centurion

+2

나는 마지막 ID에 대한 해결책이 될 수있는 mysql 트리거, 저장 프로 시저 및 테이블의 조합이라고 생각합니다. 그래서 당신은 당신 자신의 인공 지능 기능을 만들 수 있습니다. 하지만 나는 mysql을 사용하여 이전에 이것을 더 새롭게했다. – shod

+0

좋아,이 문제를 만난 사람들은 이것이 InnoDB 테이블의 문제이므로, 가장 간단한 해결책은 새로운 필드를 삭제하는 것이지만,이 방법을 사용하면 모든 애플리케이션과 변경 사항을 처리해야하며 다른 솔루션이 될 수 있습니다 shod의, 다시 고마워하는 문제. 그런데도 필자는 문서를 읽으면서 필드 나 테이블 자체를 약간 조정할 해결책이 없습니다. – Centurion