MySQL 오류 1075(42000)란?
MySQL에서 AUTO_INCREMENT 속성을 가진 컬럼을 생성할 때 해당 컬럼에 PRIMARY KEY(기본 키)를 지정하지 않으면 다음과 같은 오류가 발생합니다.
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
(잘못된 테이블 정의입니다. 자동 증가 컬럼은 하나만 존재할 수 있으며, 반드시 키로 정의되어야 합니다.)
이 오류를 해결하려면 AUTO_INCREMENT 필드에 PRIMARY KEY를 추가해야 합니다. 아래에서 오류가 발생하는 과정과 해결 방법을 단계별로 살펴보겠습니다.
오류 발생 예시
다음은 PRIMARY KEY 없이 AUTO_INCREMENT 컬럼을 포함한 테이블을 생성할 때 동일한 오류가 발생하는 예시입니다.
mysql> create table DemoTable
(
StudentId int NOT NULL AUTO_INCREMENT,
StudentName varchar(40),
StudentAge int
);
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a keyAUTO_INCREMENT 컬럼인 StudentId에 기본 키가 지정되지 않았기 때문에 MySQL이 오류를 반환합니다.
오류 해결 방법
위 오류를 해결하려면 AUTO_INCREMENT 컬럼에 PRIMARY KEY를 함께 선언하면 됩니다. 다음과 같이 테이블을 생성합니다.
mysql> create table DemoTable
(
StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentName varchar(40),
StudentAge int
);
Query OK, 0 rows affected (1.01 sec)이제 테이블이 성공적으로 생성됩니다. AUTO_INCREMENT 컬럼에는 하나의 기본 키만 지정할 수 있으며, 이는 각 레코드를 고유하게 식별하는 역할을 합니다.
데이터 삽입하기
INSERT 명령을 사용하여 테이블에 몇 개의 레코드를 추가해 보겠습니다.
mysql> insert into DemoTable(StudentName,StudentAge) values('Chris Brown',19);
Query OK, 1 row affected (0.30 sec)
mysql> insert into DemoTable(StudentName,StudentAge) values('David Miller',18);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable(StudentName,StudentAge) values('John Doe',20);
Query OK, 1 row affected (0.11 sec)StudentId는 직접 값을 넣지 않아도 AUTO_INCREMENT 속성 덕분에 자동으로 1씩 증가하며 저장됩니다.
결과 확인하기
SELECT 문을 사용하여 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+-----------+--------------+------------+ | StudentId | StudentName | StudentAge | +-----------+--------------+------------+ | 1 | Chris Brown | 19 | | 2 | David Miller | 18 | | 3 | John Doe | 20 | +-----------+--------------+------------+ 3 rows in set (0.00 sec)
정리
MySQL 오류 1075(42000)는 AUTO_INCREMENT 컬럼이 키로 정의되지 않았을 때 발생합니다. 해결 방법은 매우 간단합니다.
- AUTO_INCREMENT 컬럼은 반드시 PRIMARY KEY(또는 UNIQUE KEY)로 정의해야 합니다.
- AUTO_INCREMENT 컬럼은 한 테이블에 하나만 존재할 수 있습니다.
- 컬럼 정의 뒤에 'PRIMARY KEY'를 붙이거나, 테이블 정의 마지막에 'PRIMARY KEY(StudentId)' 형태로 별도 선언할 수도 있습니다.
이 규칙만 기억하면 해당 오류를 손쉽게 예방하고 해결할 수 있습니다.