찾다

 >  Q&A  >  본문

MySql에 열을 자동 증가로 설정할 수 없는 문제가 있습니다.

<p>"Id"(기본 키), "KlantId", "Datum", "BestellingsTypeId"라는 4개의 열이 있는 "Bestelling"이라는 테이블이 있습니다. 이제 열 ID가 자동으로 증가하길 원하지만, 이 작업을 수행하려고 하면 다음 오류가 발생합니다. </p> <pre class="brush:php;toolbar:false;">ERROR 1062: ALTER TABLE로 인해 자동 증가 재정렬이 발생하여 기본 키 'PRIMARY'에 대해 항목 '1'이 중복되었습니다. SQL 문: ALTER TABLE `aafest`.`aafest_bestelling` CHANGE COLUMN `Id` `Id` INT(11) NOT NULL AUTO_INCREMENT 오류: 롤백 스크립트를 실행하는 동안 오류가 발생했습니다. 자세한 내용은 다음과 같습니다. 오류 1046: 선택된 데이터베이스가 없습니다. SQL 문: 테이블 생성 `aafest_bestelling`( `Id` int(11) NULL이 아님, `KlantId` int(11) 기본 NULL, `데이텀` 날짜 DEFAULT NULL, `BestellingstypeId` int(11) DEFAULT NULL, 기본 키(`Id`) ) 엔진=InnoDB DEFAULT CHARSET=latin1</pre> <p>아이디어 있으신 분 계신가요? </p>
P粉998100648P粉998100648462일 전600

모든 응답(2)나는 대답할 것이다

  • P粉391677921

    P粉3916779212023-08-23 15:36:57

    열을 auto_increment로 변환하려고 할 때 행 중 하나의 값이 0인 경우에도 이 문제가 발생했습니다. 대안은 다음을 설정하는 것입니다:

    으아악

    세션을 설정하려면.

    이렇게 하면 열이 ID가 0인 auto_increment로 변경됩니다.

    0은 이상적이지 않으며 auto_increment 열에 사용하지 않는 것이 좋습니다. 안타깝게도 상속된 데이터세트의 일부이므로 지금은 변경할 수 없습니다.

    나중에 설정(및 기타 설정)을 지우는 것이 가장 좋습니다.

    으아악

    단, 현재 클라이언트 세션이 종료되면 삭제됩니다.

    'NO_AUTO_VALUE_ON_ZERO' 설정에 대한 자세한 내용은 여기를 참조하세요.

    회신하다
    0
  • P粉146080556

    P粉1460805562023-08-23 00:06:11

    이는 테이블에 ID가 0(또는 음수)인 기존 레코드가 포함된 경우 발생합니다. 양수 값을 사용하도록 기존 레코드를 모두 업데이트하면 해당 열에 auto_increment를 설정할 수 있습니다.

    편집: 어떤 사람들은 0이 어떻게 나타나는지 물었습니다. 명확히 하기 위해 MySQL 참조 매뉴얼에는 "숫자 유형의 경우 기본값은 0이지만 AUTO_INCREMENT 속성이 있는 정수 또는 부동 소수점 유형의 경우 기본값은 시퀀스의 다음 값입니다."라고 나와 있습니다. auto_increment를 활성화하기 전의 값 숫자 열에 값을 제공하지 않고 테이블에 삽입을 수행하는 경우 삽입 중에 기본값인 0이 사용됩니다. 자세한 내용은 https://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html에서 확인할 수 있습니다.

    회신하다
    0
  • 취소회신하다