예기치 않은 AUTO_INCRECTION 동작
PHP 5.6.7, mariadb 10.0.17-MariaDB를 실행하는 서버가 있습니다.CodeIgniter 애플리케이션에는 두 개의 테이블이 있습니다.point_trigger그리고.trigger_filter, 에 연결되어 있는.point_trigger_id, 일대 다의둘다.id열을 정수로 설정합니다.AUTO_INCREMENT(따라서 복합 키가 없습니다.)이것이 그가 겪은 일입니다.
고객이 그 중 하나를 제거했습니다.
point_trigger웹 인터페이스에 의한 s.Sa는 기본적으로 컨트롤러를 불렀고 그 다음에 행을 제거했습니다.point_trigger한 줄(이 경우에는 한 줄만)trigger_filter. 통화 기록은 다음과 같이 끝납니다./delete/235, 라는 뜻으로point_trigger_id삭제할 행을 찾는 데 사용된 다음과 같이 설정되었습니다.235. 지금까지 좋아요.며칠 후에 클라이언트는 다시 웹 인터페이스로 이동하여 새로운 것을 추가합니다.
point_trigger.클라이언트가 호출하는 이유는 자신이 만든 포인트 트리거가 예기치 않게 작동하기 때문입니다.
데이터베이스를 확인하고...
point_trigger테이블에는 ID에 공백이 없습니다. 즉,point_trigger사용자가 만든 ID는 다음과 같습니다.235. 우리는 관련된 것을 확인합니다.trigger_filter테이블과 이 테이블 역시 공백이 없습니다. 이 테이블의 자동 증가 ID는 다음 테이블입니다.
우리가 알고 있는 것(또는 알고 있다고 생각하는 것)은 행을 제거하는 측면에서 삭제와 추가 모두 정상적으로 진행되었다는 것입니다.저희가 그렇게 생각하는 이유는point_trigger이전 매개변수를 제거한 후 생성된 클라이언트의 매개변수가 다르며, 삭제 및 추가 전에는 편집사항이 기록되지 않았습니다.
그래서 AUTO_INCRECTION을 삭제하고 추가하는 시간 사이에 다시 계산하게 만드는 무언가가 있었습니다.point_trigger. 누가 말해줄 수 있나요? 아니면 그냥 뭐가 될 수 있는지 알려줄 수 있나요?
미리 감사드립니다!
사용자가 만든 ID는 235와 같습니다.
이것이 사건의 연속일까요?
- 행을 삽입하고 235개를 할당받습니다.
- DELETE 235, MAX(id)=234를 남깁니다.
- 셧다운 마리아DB
- 스타트업 마리아DB
- 행을 넣고 다시 235를 얻습니다.
5단계에 대해 자세히 설명합니다.
- 테이블 열기 - MAX(id)+1(234+1)을 다음 ID로 찾습니다.
AUTO_INCREMENT - INSERT는 이제 그 값(235)을 얻습니다.
죄송합니다만, 그렇게 작동합니다.AUTO_INCREMENT모든 시간이 아닌 언제든지 고유성을 보장합니다.
언급URL : https://stackoverflow.com/questions/31409929/unexpected-auto-increment-behaviour
'programing' 카테고리의 다른 글
| 에 Powershell v2.0을 내장하고 있습니다.Windows 8 RTM의 NET 앱 (0) | 2023.09.07 |
|---|---|
| 프로그램적으로 뷰를 뷰에 추가하는 방법 (0) | 2023.09.07 |
| Spring Boot 3으로 업그레이드할 때 wiremock 문제 발생 (0) | 2023.09.07 |
| 입력 상자에 부트스트랩 글리폰 추가 (0) | 2023.09.07 |
| Node.js에서 CTRL+C 탐지 (0) | 2023.09.07 |