오류 1064의 원인: 백틱과 따옴표의 혼동
MySQL에서는 두 가지 유형의 따옴표를 사용할 수 있습니다. 하나는 백틱(backtick, `)이고, 다른 하나는 작은따옴표(') 또는 큰따옴표(")입니다. ERROR 1064(42000)는 주로 컬럼 이름에 작은따옴표를 사용했을 때 발생합니다. 컬럼 이름은 반드시 백틱(` `)으로 감싸야 하며, 작은따옴표는 문자열 값에만 사용해야 합니다.
정리하면 다음과 같습니다.
- 백틱(`): 컬럼 이름, 테이블 이름 등 식별자에 사용
- 작은따옴표('): 삽입하는 문자열 데이터 값에 사용
테이블 생성으로 오류 상황 살펴보기
오류를 이해하기 위해 먼저 테이블을 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.
mysql> create table Backtick_SymbolDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> Name varchar(20),
-> FileName varchar(30),
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.81 sec)
오류가 발생하는 경우
아래와 같이 컬럼 이름을 백틱 대신 작은따옴표로 감싸면 오류가 발생합니다. `Name` 컬럼에는 백틱을 사용했지만, 'FileName' 컬럼에 작은따옴표를 사용했더니 ERROR 1064가 출력되는 것을 확인할 수 있습니다.
mysql> insert into Backtick_SymbolDemo(`Name`,'FileName') values('John','Sum.cpp');
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 ''FileName') values('John','Sum.cpp')' at line 1오류 해결 방법
이 오류를 피하려면 두 가지 방법 중 하나를 선택하면 됩니다. 첫째, 모든 컬럼 이름을 백틱으로 감싸거나, 둘째, 아예 백틱과 작은따옴표를 모두 사용하지 않는 것입니다.
방법 1: 모든 컬럼 이름에 백틱 사용
mysql> insert into Backtick_SymbolDemo(`Name`,`FileName`) values('John','Sum.cpp');
Query OK, 1 row affected (0.12 sec)방법 2: 따옴표 없이 컬럼 이름 그대로 사용
mysql> insert into Backtick_SymbolDemo(Name,FileName) values('Larry','SocketProgram.java');
Query OK, 1 row affected (0.23 sec)
mysql> insert into Backtick_SymbolDemo(Name,FileName) values('Mike','UserCreationScript.sql');
Query OK, 1 row affected (0.10 sec)결과 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from Backtick_SymbolDemo;
실행 결과는 다음과 같습니다.
+----+-------+------------------------+
| Id | Name | FileName |
+----+-------+------------------------+
| 1 | John | Sum.cpp |
| 2 | Larry | SocketProgram.java |
| 3 | Mike | UserCreationScript.sql |
+----+-------+------------------------+
3 rows in set (0.00 sec)