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

MySQL 오류 1064 "SQL 구문에 오류가 있습니다..." 해결 방법 완벽 가이드

MySQL에서 ERROR 1064는 SQL 쿼리에 잘못된 구문(syntax)이 사용되었을 때 발생하는 대표적인 오류입니다. 이 오류 메시지에는 "check the manual that corresponds to your MySQL server version for the right syntax to use near..."라는 문구가 함께 출력되며, 이는 해당 위치 근처의 구문이 MySQL 서버 버전의 문법과 맞지 않는다는 의미입니다.

오류 발생 예시

아래는 잘못된 데이터 타입 선언으로 인해 오류가 발생하는 예제입니다. 테이블 생성 시 DATE 타입에 길이 값(100)을 지정하면 구문 오류가 발생합니다.

mysql> create table DemoTable689(
    UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    UserName varchar(100),
    UserLoginDate date(100) NOT NULL
);

위 쿼리를 실행하면 다음과 같은 오류 메시지가 출력됩니다.

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 '(100) NOT NULL
)' at line 5

오류 원인

핵심 원인은 date(100)입니다. MySQL에서 DATE 타입은 길이 값을 지정할 수 없습니다. VARCHAR나 CHAR와 달리 DATE, INT 등의 타입에는 크기를 명시하지 않아야 합니다.

오류 해결 방법

해결 방법은 간단합니다. DATE 타입에서 길이 값(100)을 제거하고 DATE NOT NULL로만 선언하면 됩니다. 아래는 수정된 올바른 쿼리입니다.

mysql> create table DemoTable689(
    UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    UserName varchar(100),
    UserLoginDate date NOT NULL
);
Query OK, 0 rows affected (0.68 sec)

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

mysql> insert into DemoTable689(UserName,UserLoginDate) values('John',DATE(NOW()));
Query OK, 1 row affected (0.40 sec)
mysql> insert into DemoTable689(UserName,UserLoginDate) values('Chris','2018-01-21');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable689(UserName,UserLoginDate) values('Robert',CURDATE());
Query OK, 1 row affected (0.20 sec)

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

mysql> select *from DemoTable689;

실행 결과는 다음과 같습니다. 오류 없이 정상적으로 데이터가 저장된 것을 확인할 수 있습니다.

+--------+----------+---------------+
| UserId | UserName | UserLoginDate |
+--------+----------+---------------+
|      1 | John     | 2019-07-21    |
|      2 | Chris    | 2018-01-21    |
|      3 | Robert   | 2019-07-21    |
+--------+----------+---------------+
3 rows in set (0.00 sec)

정리

MySQL 오류 1064는 주로 데이터 타입에 지원하지 않는 옵션을 붙이거나, 괄호·따옴표·세미콜론 등의 기호를 잘못 사용했을 때 발생합니다. 오류 메시지에 표시된 위치 근처의 구문을 확인하고, 위 예제처럼 타입 선언을 올바르게 수정하면 손쉽게 해결할 수 있습니다.