Ошибка 1064 в MySQL при попытке форвард-инжиниринга - PullRequest
1 голос
/ 22 апреля 2020

Я новичок в MySQL, и когда я пытался сделать "Форвард Инженер", я столкнулся с этой ошибкой:

ERROR: Error 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 '
  CONSTRAINT `fk_Vendite_Prodotti`
    FOREIGN KEY (`Prodotti_idProdotti`)
    ' at line 11
SQL Code:
        -- -----------------------------------------------------
        -- Table `mydb`.`Vendite`
        -- -----------------------------------------------------
        CREATE TABLE IF NOT EXISTS `mydb`.`Vendite` (
          `idVendite` INT NOT NULL,
          `dataVendita` DATETIME NULL,
          `qta` INT NULL,
          `costo` FLOAT NULL,
          `Prodotti_idProdotti` INT NOT NULL,
          PRIMARY KEY (`idVendite`),
          INDEX `fk_Vendite_Prodotti_idx` (`Prodotti_idProdotti` ASC) VISIBLE,
          CONSTRAINT `fk_Vendite_Prodotti`
            FOREIGN KEY (`Prodotti_idProdotti`)
            REFERENCES `mydb`.`Prodotti` (`idProdotti`)
            ON DELETE NO ACTION
            ON UPDATE NO ACTION)
        ENGINE = InnoDB

SQL script execution finished: statements: 6 succeeded, 1 failed

Fetching back view definitions in final form.
Nothing to fetch

Я знаю, что есть много вопросов об этой топи c но я видел, что это очень специфично c. Также, будучи новичком в SQL, я понятия не имею, в чем проблема

1 Ответ

0 голосов
/ 22 апреля 2020

Что касается MariaDB, то он не поддерживает невидимые индексы (это поддерживается только MySQL 8.0), поэтому ошибка возникает из-за использования ключевого слова VISIBLE.

Поскольку индексы видимы по умолчанию в любом случае, я бы предложил просто удалить его:

CREATE TABLE IF NOT EXISTS `mydb`.`Vendite` (
      `idVendite` INT NOT NULL,
      `dataVendita` DATETIME NULL,
      `qta` INT NULL,
      `costo` FLOAT NULL,
      `Prodotti_idProdotti` INT NOT NULL,
      PRIMARY KEY (`idVendite`),
      INDEX `fk_Vendite_Prodotti_idx` (`Prodotti_idProdotti`),
      CONSTRAINT `fk_Vendite_Prodotti`
        FOREIGN KEY (`Prodotti_idProdotti`)
        REFERENCES `mydb`.`Prodotti` (`idProdotti`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION
) ENGINE = InnoDB
...