почему mariadb выдает синтаксическую ошибку для файла sql, созданного с помощью workbench - PullRequest
0 голосов
/ 15 октября 2019

Я создал модель с MySQL Workbench, и каждый раз, когда я хочу выполнить файл sql, я получаю эту ошибку

ОШИБКА 1064 (42000) в строке 55 в файле: 'D: \db.sql ': у вас ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса, который можно использовать рядом с 'CONSTRAINT fk_customer_order_customer1 FOREIGN KEY (customer_id)' в строке 8

ERROR 1064 (42000) в строке 76 в файле:'D: \ db.sql': у вас ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса, который можно использовать рядом с 'CONSTRAINT fk_product_category FOREIGN KEY (category_id) REFERENC' в строке 9

ERROR 1064 (42000) в строке 98 в файле: 'D: \ db.sql': у вас ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования рядом с 'INDEX fk_ordered_product_product (customer_order_id ASC) VISIBLE, CONST' в строке 6

, и это код mysqlверстак для меня сгенерированный

  -- MySQL Workbench Forward Engineering

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------
-- -----------------------------------------------------
-- Schema ecommerce_ee
-- -----------------------------------------------------
DROP SCHEMA IF EXISTS `ecommerce_ee` ;

-- -----------------------------------------------------
-- Schema ecommerce_ee
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `ecommerce_ee` ;
USE `ecommerce_ee` ;

-- -----------------------------------------------------
-- Table `ecommerce_ee`.`customer`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `ecommerce_ee`.`customer` ;

CREATE TABLE IF NOT EXISTS `ecommerce_ee`.`customer` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(45) NOT NULL,
  `email` VARCHAR(45) NOT NULL,
  `phone` VARCHAR(45) NOT NULL,
  `address` VARCHAR(45) NOT NULL,
  `city_region` VARCHAR(45) NOT NULL,
  `cc_number` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`id`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `ecommerce_ee`.`category`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `ecommerce_ee`.`category` ;

CREATE TABLE IF NOT EXISTS `ecommerce_ee`.`category` (
  `id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`id`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `ecommerce_ee`.`customer_order`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `ecommerce_ee`.`customer_order` ;

CREATE TABLE IF NOT EXISTS `ecommerce_ee`.`customer_order` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `amount` DECIMAL(6,2) NOT NULL,
  `date_created` TIMESTAMP NOT NULL,
  `confirmation_number` INT UNSIGNED NOT NULL,
  `customer_id` INT UNSIGNED NOT NULL,
  PRIMARY KEY (`id`),
  INDEX `fk_customer_order_customer` (`customer_id` ASC) VISIBLE,
  CONSTRAINT `fk_customer_order_customer1`
    FOREIGN KEY (`customer_id`)
    REFERENCES `ecommerce_ee`.`customer` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `ecommerce_ee`.`product`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `ecommerce_ee`.`product` ;

CREATE TABLE IF NOT EXISTS `ecommerce_ee`.`product` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(45) NOT NULL,
  `price` DECIMAL(6,2) NOT NULL,
  `description` TINYTEXT NULL,
  `last_update` TIMESTAMP NOT NULL,
  `category_id` TINYINT UNSIGNED NOT NULL,
  PRIMARY KEY (`id`, `name`),
  INDEX `fk_product_category` (`category_id` ASC) VISIBLE,
  CONSTRAINT `fk_product_category`
    FOREIGN KEY (`category_id`)
    REFERENCES `ecommerce_ee`.`category` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `ecommerce_ee`.`ordered_product`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `ecommerce_ee`.`ordered_product` ;

CREATE TABLE IF NOT EXISTS `ecommerce_ee`.`ordered_product` (
  `customer_order_id` INT UNSIGNED NOT NULL,
  `product_id` INT UNSIGNED NOT NULL,
  `quantity` SMALLINT UNSIGNED NOT NULL,
  PRIMARY KEY (`customer_order_id`, `product_id`),
  INDEX `fk_ordered_product_customer_order` (`product_id` ASC, `quantity` ASC) VISIBLE,
  INDEX `fk_ordered_product_product` (`customer_order_id` ASC) VISIBLE,
  CONSTRAINT `fk_customer_order_has_product_customer_order1`
    FOREIGN KEY (`customer_order_id`)
    REFERENCES `ecommerce_ee`.`customer_order` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_customer_order_has_product_product1`
    FOREIGN KEY (`product_id` , `quantity`)
    REFERENCES `ecommerce_ee`.`product` (`id` , `name`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

1 Ответ

0 голосов
/ 18 октября 2019

Удалить ключевое слово VISIBLE. (Это было просто до текста 'рядом'.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...