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

MySQL 오류 1064(42000) 해결 방법 – varchar 크기 미지정으로 인한 문제

오류 1064(42000)는 언제 발생할까요?

MySQL에서 테이블을 생성할 때 varchar 데이터 타입에 크기를 지정하지 않으면 오류 1064(42000)가 발생합니다. varchar는 반드시 최대 길이를 명시해야 하는 가변 길이 문자열 타입이기 때문입니다.

먼저 오류가 발생하는 상황을 살펴보겠습니다. 아래와 같이 크기 없이 varchar 컬럼을 선언하여 테이블을 생성하면 어떻게 되는지 확인해 보세요.

mysql> create table DemoTable
(
   Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   FirstName varchar,
   LastName varchar
);
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 ',
LastName varchar
)' at line 4

해결 방법: varchar에 크기 지정하기

위 오류는 varchar 데이터 타입에 varchar(100)처럼 크기를 명시하는 것만으로 간단히 해결할 수 있습니다. MySQL에서 varchar를 사용할 때는 항상 괄호 안에 최대 문자 길이를 함께 작성해야 한다는 점을 기억하세요.

이제 오류를 수정하고 테이블을 다시 생성해 보겠습니다.

mysql> create table DemoTable
(
   Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   FirstName varchar(100),
   LastName varchar(100)
);
Query OK, 0 rows affected (0.60 sec)

테이블이 정상적으로 생성되었습니다. 이어서 insert 명령을 사용해 몇 개의 레코드를 삽입해 보겠습니다.

mysql> insert into DemoTable(FirstName,LastName) values('Adam','Smith');
Query OK, 1 row affected (0.25 sec)
mysql> insert into DemoTable(FirstName,LastName) values('John','Doe');
Query OK, 1 row affected (0.38 sec)
mysql> insert into DemoTable(FirstName,LastName) values('Chris','Brown');
Query OK, 1 row affected (0.11 sec)

결과 확인하기

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

mysql> select *from DemoTable;

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

+----+-----------+----------+
| Id | FirstName | LastName |
+----+-----------+----------+
|  1 | Adam      | Smith    |
|  2 | John      | Doe      |
|  3 | Chris     | Brown    |
+----+-----------+----------+
3 rows in set (0.00 sec)

정리

MySQL에서 오류 1064(42000)는 SQL 문법이 서버 버전에 맞지 않을 때 발생하는 대표적인 구문 오류입니다. 이번 사례처럼 varchar 타입에 크기를 지정하지 않으면 이 오류가 나타나며, varchar(길이) 형식으로 최대 길이를 명시하면 즉시 해결됩니다. 테이블 설계 시 모든 varchar 컬럼에 적절한 크기를 지정하는 습관을 들이면 이러한 오류를 예방할 수 있습니다.