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

MySQL 오류 1064(42000): ZEROFILL 열의 SQL 구문 오류 원인과 해결 방법

오류 1064(42000)란 무엇인가?

MySQL에서 ZEROFILL 속성을 잘못된 순서로 작성하면 다음과 같은 구문 오류가 발생합니다.

mysql> create table DemoTable
    -> (
    -> StudentCode int(10) NOT NULL ZEROFILL AUTO_INCREMENT PRIMARY KEY
    -> );
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ZEROFILL AUTO_INCREMENT PRIMARY KEY)' at line 3

이 오류는 ZEROFILL 키워드의 위치가 올바르지 않기 때문에 발생합니다. MySQL에서는 열을 정의할 때 속성을 지정하는 순서가 중요하며, ZEROFILL은 반드시 데이터 타입 바로 뒤에, NOT NULL보다 앞에 위치해야 합니다.

올바른 문법

정상적으로 동작하도록 하려면 아래와 같은 문법을 사용하세요.

yourColumnName int(10) ZEROFILL NOT NULL AUTO_INCREMENT PRIMARY KEY

핵심은 ZEROFILLNOT NULL 앞에 배치하는 것입니다. 이제 올바른 문법으로 실제 테이블을 생성해 보겠습니다.

테이블 생성하기

mysql> create table DemoTable
    -> (
    -> StudentCode int(10) ZEROFILL NOT NULL AUTO_INCREMENT PRIMARY KEY
    -> );
Query OK, 0 rows affected (0.55 sec)

테이블이 오류 없이 성공적으로 생성되었습니다.

레코드 삽입하기

INSERT 명령어를 사용하여 테이블에 여러 개의 레코드를 삽입합니다. AUTO_INCREMENT 속성 덕분에 값을 직접 지정하지 않아도 자동으로 번호가 매겨집니다.

mysql> insert into DemoTable values();
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.28 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.10 sec)

결과 확인하기

SELECT 문을 사용하여 테이블의 모든 레코드를 조회합니다.

mysql> select *from DemoTable;

실행 결과는 다음과 같습니다.

+-------------+
| StudentCode |
+-------------+
| 0000000001  |
| 0000000002  |
| 0000000003  |
| 0000000004  |
| 0000000005  |
+-------------+
5 rows in set (0.00 sec)

ZEROFILL 속성 덕분에 자동 증가된 값들이 지정된 자릿수(10자리)만큼 앞부분이 0으로 채워져 출력되는 것을 확인할 수 있습니다. 예를 들어 값 1은 0000000001로 표시됩니다. 학생 코드나 주문 번호처럼 일정한 자릿수를 유지해야 하는 ID를 관리할 때 이 속성이 유용하게 활용됩니다.