2017-02-12 7 views
0

Я пытался запустить следующий запрос на моем SQL Server:# 1064 - У вас есть ошибка в синтаксисе SQL; проверьте руководство, которое соответствует вашему MariaDB сервера

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 
+0

какой версия db вы используете ..? – scaisEdge

+0

Я использую XAMPP, 10.1.19-MariaDB – User57

+0

SELECT VERSION; – Strawberry

ответ

1

Вы дали одиночные кавычки в определениях индексов вместо обратных кавычках

Попробуйте это:

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 
); 
+0

Это не решение, я думаю, потому что я уже проверил с этим .. ничего не вышло. ..средняя ошибка, я получаю – User57

0

Я думаю, вы получаете сообщение об ошибке для типа данных JSON.

Для Mysql 5.7 вы можете получить помощь по ссылке ниже.

https://dev.mysql.com/doc/refman/5.7/en/json.html

Вы можете проверить vesrion используя ниже запроса.

select version() as 'mysql version' 
+0

@scaisEdge [JSON * table * type] (https://mariadb.com/kb/en/mariadb/connect-json-table-type/) в MariaDB 10.0.16 is полностью не связанных с колонками JSON. –

1

«JSON» разобран на сервере. JSON - одна из точек расхождения.

MySQL 5.7 представил тип данных JSON, который соответствует вашему синтаксису.

MariaDB 10.0.16 представил ENGINE=CONNECT table_type=JSON, который не соответствует вашему синтаксису.