Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 오류 1075(42000) 해결 방법: 잘못된 테이블 정의 – AUTO_INCREMENT 열은 반드시 키로 정의해야 합니다

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 key

AUTO_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)' 형태로 별도 선언할 수도 있습니다.

이 규칙만 기억하면 해당 오류를 손쉽게 예방하고 해결할 수 있습니다.