#1064 - SQL 구문에 오류가 있습니다.MariaDB 서버에 대응하는 메뉴얼을 확인해 주세요.
SQL 서버에서 다음 쿼리를 실행하려고 했습니다.
CREATE TABLE `e_store`.`products`(
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`name` VARCHAR(250) NOT NULL ,
`brand_id` INT UNSIGNED NOT NULL ,
`category_id` INT UNSIGNED NOT NULL ,
`attributes` JSON NOT NULL ,
PRIMARY KEY(`id`) ,
INDEX `CATEGORY_ID`(`category_id` ASC) ,
INDEX `BRAND_ID`(`brand_id` ASC) ,
CONSTRAINT `brand_id` FOREIGN KEY(`brand_id`) REFERENCES `e_store`.`brands`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE ,
CONSTRAINT `category_id` FOREIGN KEY(`category_id`) REFERENCES `e_store`.`categories`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE
);
e_store 데이터베이스에 이미 브랜드와 카테고리 테이블이 있습니다.
그러나 다음 오류가 발생했습니다.
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'JSON NOT NULL ,
PRIMARY KEY(`id`) ,
INDEX `CATEGORY_ID`('category_id' ' at line 6
저와 비슷한 문제를 겪고 있는 분들의 경우:
MariaDB는 기본적으로 JSON 데이터 유형을 구현하지 않지만 JSON을 에일리어스로 사용합니다.LONGTEXT
호환성을 위해.매뉴얼(https://mariadb.com/kb/en/library/json-data-type/):
JSON은 의 에일리어스입니다
LONGTEXT
MySQL과의 호환성을 위해 도입되었습니다.JSON
data type 입니다.MariaDB는 이 기능을LONGTEXT
오히려 JSON 데이터 유형이 SQL 표준과 모순되고 MariaDB의 벤치마크에서 성능이 최소한 동등하다는 것을 알 수 있습니다.유효한 json 문서가 삽입되도록 하기 위해 JSON_VALID 함수를 CHECK 제약으로 사용할 수 있습니다.
이 때문에 문제가 있는 경우JSON
MariaDB의 데이터 유형, 단순히 변경만 하면 됩니다.LONGTEXT
. ;-)
"JSON
" 가 서버에서 해석됩니다. JSON
차이점 중 하나입니다.
MySQL 5.7은JSON
구문과 일치하는 datatype을 지정합니다.
MariaDB 10.0.16은ENGINE=CONNECT table_type=JSON
시도된 구문과 일치하지 않습니다.
JSON 데이터 타입에 오류가 발생하고 있는 것 같습니다.
Mysql 5.7의 경우 아래 링크에서 도움을 받을 수 있습니다.
https://dev.mysql.com/doc/refman/5.7/en/json.html
아래 쿼리를 사용하여 verriion을 확인할 수 있습니다.
select version() as 'mysql version'
인덱스 정의에 백틱 대신 작은 따옴표를 지정했습니다.
이것을 시험해 보세요.
CREATE TABLE `e_store`.`products`(
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`name` VARCHAR(250) NOT NULL ,
`brand_id` INT UNSIGNED NOT NULL ,
`category_id` INT UNSIGNED NOT NULL ,
`attributes` JSON NOT NULL ,
PRIMARY KEY(`id`) ,
INDEX `CATEGORY_ID`(`category_id` ASC) , -- Changed single quotes to backticks
INDEX `BRAND_ID`(`brand_id` ASC) , -- Changed single quotes to backticks
CONSTRAINT `brand_id` FOREIGN KEY(`brand_id`) REFERENCES `e_store`.`brands`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE ,
CONSTRAINT `category_id` FOREIGN KEY(`category_id`) REFERENCES `e_store`.`categories`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE
);
언급URL : https://stackoverflow.com/questions/42185598/1064-you-have-an-error-in-your-sql-syntax-check-the-manual-that-corresponds
'source' 카테고리의 다른 글
Django와 Python 3에서 사용할 데이터베이스는 무엇입니까? (0) | 2022.09.15 |
---|---|
MariaDB 복제가 작동하지 않을 수 있음 (0) | 2022.09.15 |
PhpMyAdmin의 왼쪽 메뉴에 있는 모든 테이블을 나열하려면 어떻게 해야 합니까? (0) | 2022.09.15 |
LEFT JOIN 쿼리를 실행하는 MariaDB가 Mysql보다 100배 느립니다. (0) | 2022.09.15 |
MySQL에서 MariaDB로 또는 그 반대로 이행 (0) | 2022.09.15 |