| 😱 오류내용
DBeaver 에서 테이블을 생성해서 컬럼을 집어넣고 있었는데 아래와 같은 오류가 발생했다.
(conn=82302870) Incorrect table definition; there can be only one auto column and it must be defined as a key
| 🚀 현상
회원 가입시 저장 될 회원 DB를 구성하고 있었는데
아래와 같이 순번을 넣는 컬럼을 seq 로 설정하고 auto_increment 체크를 했었다.
DBeaver에서 생성해준 create 문
CREATE TABLE CUSTOMER ( seq BIGINT auto_increment NOT NULL, userId varchar(30) NOT NULL, password varchar(50) NOT NULL, userName varchar(20) NULL, email varchar(100) NULL, phone varchar(20) NULL, `agree-require` BOOL NOT NULL, `agree-marketing` BOOL NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
그대로 진행시 발생했던 오류 내용을 다시 한번 살펴보자.
(conn=82302870) Incorrect table definition; there can be only one auto column and it must be defined as a key
잘못된 테이블 정의입니다. 자동 열은 하나만 있을 수 있으며 키로 정의되어야 합니다.
분명히 DDL 에 문제가 있다는 것은 나도 알고 있다.
auto _column이 한개만 있어야하고. 그것이 키로 정의되어야한다는 것.
그러니까 지금 auto_column으로 설정된 컬럼이 키가 아니라고 오류를 빼액 뱉어낸 것.
DBeaver 에서 어떻게 PK 설정하는건데요..?
| 💫 해결방안
| ⚓️ DBeaver 에서 PK 설정하기
1. 생성했던 테이블을 선택하고 Constraints 를 선택합니다.
2. 우클릭하여 Create New Constraint 를 선택합니다. 혹은 우측 하단의 아래 아이콘을 선택합니다.
3. 어떤 컬럼을 어떤 키로 생성할건지 체크한 후에 확인 버튼을 눌러줍니다.
그럼 이어서 다시 Save 버튼을 눌러봅니다.
DDL 이 아래와 같이 수정된 것을 확인 할 수 있습니다.
CREATE TABLE CUSTOMER (
seq BIGINT auto_increment NOT NULL,
userId varchar(30) NOT NULL,
password varchar(50) NOT NULL,
userName varchar(20) NULL,
email varchar(100) NULL,
phone varchar(20) NULL,
`agree-require` BOOL NOT NULL,
`agree-marketing` BOOL NOT NULL,
CONSTRAINT CUSTOMER_PK PRIMARY KEY (seq)
)
ENGINE=MyISAM
DEFAULT CHARSET=utf8
COLLATE=utf8_general_ci;
이후 확인 버튼을 선택하니 정상적으로 테이블 생성이 완료 되었습니다.
오늘의 결론
auto_increment는 Key 로 설정해야한다.
테이블 생성시 PK 설정은 필수 !
(당연한거다..)
자동 증가를 사용하면 새 레코드가 테이블에 삽입될 때 고유 번호가 자동으로 생성됩니다. 종종 이는 새 레코드가 삽입될 때마다 자동으로 생성되기를 원하는 기본 키 필드입니다.
'프로그래밍 언어 > Database' 카테고리의 다른 글
[SQL] 컬럼에 적용된 자동증가(Auto Increment) 속성 제거하기 , 컬럼 속성 변경 쿼리 (0) | 2021.09.29 |
---|