반응형
자동 열은 하나만 있을 수 있습니다.
MySQL의 '자동 증가 컬럼을 하나만 가질 수 있습니다' 오류를 수정하려면 어떻게 해야 합니까?
CREATE TABLE book (
id INT AUTO_INCREMENT NOT NULL,
accepted_terms BIT(1) NOT NULL,
accepted_privacy BIT(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
MySQL에 "잘못된 테이블 정의입니다. 자동 열은 하나만 있을 수 있으며 키로 정의해야 합니다."라고 나와 있습니다. 그래서 다음과 같이 기본 키를 추가하자 작동하기 시작했습니다.
CREATE TABLE book (
id INT AUTO_INCREMENT NOT NULL,
accepted_terms BIT(1) NOT NULL,
accepted_privacy BIT(1) NOT NULL,
primary key (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
완전한 에러 메세지가 울립니다.
ERROR 1075(42000):테이블 정의가 잘못되었습니다. 자동 열은 하나만 있을 수 있으며 키로 정의해야 합니다.
추가하다primary key
에게auto_increment
필드:
CREATE TABLE book (
id INT AUTO_INCREMENT primary key NOT NULL,
accepted_terms BIT(1) NOT NULL,
accepted_privacy BIT(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
또한 "키"가 반드시 기본 키를 의미하는 것은 아닙니다.다음과 같은 기능이 있습니다.
CREATE TABLE book (
isbn BIGINT NOT NULL PRIMARY KEY,
id INT NOT NULL AUTO_INCREMENT,
accepted_terms BIT(1) NOT NULL,
accepted_privacy BIT(1) NOT NULL,
INDEX(id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
이것은 의도된 예이며 최선의 아이디어는 아닐 수 있지만 경우에 따라서는 매우 유용할 수 있습니다.
CREATE TABLE book (
id INT AUTO_INCREMENT primary key NOT NULL,
accepted_terms BIT(1) NOT NULL,
accepted_privacy BIT(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
프라이머리 키를 작성하지 않은 경우 SEQUALIZE는 기본 이름의 프라이머리 키를 자동으로 생성하기 때문에 이 문제가 발생합니다.id
당신이 이미 1개를 만들고 SEQUALISE도 1개를 작성했기 때문에 중복이것에 의해 중복이 발생합니다.하지만 당신이 정의했을 때id
를 프라이머리 키로서 사용합니다.SEQUALIZE가 기본값을 생성하지 않았습니다.id
프라이머리 키
언급URL : https://stackoverflow.com/questions/8645889/there-can-be-only-one-auto-column
반응형
'sourcecode' 카테고리의 다른 글
val()과 text()의 차이 (0) | 2022.09.17 |
---|---|
Maven이 모든 테스트를 실행하도록 하는 것, 심지어 일부 실패 시에도 (0) | 2022.09.17 |
배열에 대한 Python csv 문자열 (0) | 2022.09.17 |
Eclipse WTP vs sydeo, "출판 없이 모듈 제공" (0) | 2022.09.16 |
MariaDB Bitwise AND(&) 연산 (0) | 2022.09.16 |