MySQL 오류 1064, 왜 발생할까?
테이블을 생성할 때 저장 엔진(Storage Engine)을 지정하는 자리에 TYPE 키워드를 사용하면 다음과 같은 1064 구문 오류가 발생합니다.
mysql> create table DemoTable1836
(
ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
ClientName varchar(20)
)Type=MyISAM AUTO_INCREMENT=1;
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 'Type=MyISAM AUTO_INCREMENT=1' at line 5
이는 예전 버전의 MySQL에서 사용되던 TYPE 문법이 최신 버전에서 제거되었기 때문입니다. MySQL 8.0부터는 반드시 ENGINE 키워드를 사용해야 합니다.
해결 방법: TYPE 대신 ENGINE 사용하기
아래와 같이 Type=MyISAM 부분을 ENGINE=MyISAM으로 변경하면 오류 없이 정상적으로 테이블이 생성됩니다.
mysql> create table DemoTable1836
(
ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
ClientName varchar(20)
)ENGINE=MyISAM AUTO_INCREMENT=1;
Query OK, 0 rows affected (0.00 sec)
1. 데이터 삽입하기
INSERT 명령어를 사용해 테이블에 레코드를 추가해 보겠습니다.
mysql> insert into DemoTable1836(ClientName) values('Chris');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1836(ClientName) values('David');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1836(ClientName) values('Mike');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1836(ClientName) values('Sam');
Query OK, 1 row affected (0.00 sec)2. 저장된 데이터 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select * from DemoTable1836;
실행 결과는 다음과 같습니다.
+----------+------------+
| ClientId | ClientName |
+----------+------------+
| 1 | Chris |
| 2 | David |
| 3 | Mike |
| 4 | Sam |
+----------+------------+
4 rows in set (0.00 sec)
정리
MySQL 1064 오류 중 'Type=MyISAM' 관련 구문 오류는 구식 문법을 사용했기 때문에 발생합니다. TYPE 대신 ENGINE 키워드로 변경하는 것만으로 간단히 해결할 수 있습니다. 참고로 MyISAM은 트랜잭션을 지원하지 않으므로, 최신 프로젝트에서는 기본 엔진인 InnoDB 사용을 권장합니다.