MY SQL ОШИБКА: Ошибка 1064: в синтаксисе SQL возникла ошибка; - PullRequest
0 голосов
/ 28 марта 2020

Выполнение сценария SQL на сервере ОШИБКА: Ошибка 1064: в синтаксисе SQL возникла ошибка; проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования рядом с 'INDEX fk_film_actor_actor_id_idx (actor_id AS C) VISIBLE, CONSTRAINT `fk' в строке 10

SQL Код:

    -- -----------------------------------------------------
    -- Table `baza_filmova`.`film_actor`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `baza_filmova`.`film_actor` (
      `film_actor_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
      `film_id` INT(10) UNSIGNED NOT NULL,
      `actor_id` INT(10) UNSIGNED NOT NULL,
      `role` VARCHAR(45) NOT NULL,
      PRIMARY KEY (`film_actor_id`),
      INDEX `fk_film_actor_film_id_idx` (`film_id` ASC) VISIBLE,
      INDEX `fk_film_actor_actor_id_idx` (`actor_id` ASC) VISIBLE,
      CONSTRAINT `fk_film_actor_film_id`
        FOREIGN KEY (`film_id`)
        REFERENCES `baza_filmova`.`film` (`film_id`)
        ON DELETE RESTRICT
        ON UPDATE CASCADE,
      CONSTRAINT `fk_film_actor_actor_id`
        FOREIGN KEY (`actor_id`)
        REFERENCES `baza_filmova`.`actor` (`actor_id`)
        ON DELETE RESTRICT
        ON UPDATE CASCADE)
    ENGINE = InnoDB

SQL Выполнение сценария завершено: операторы: 7 успешно выполнены, 1 не удалось

Извлечение определений вида назад в окончательной форме. Ничего не получается

Я использую MySQL Workbench 8.0.18. Я начинаю делать модель, и когда я нажимаю, чтобы отправить инженера, он делает только для таблиц, но bud не создает этот film_actor. Его средняя таблица между таблицей фильмов и таблицей актеров.

Есть ли у кого-то такая же ошибка раньше и как я могу ее исправить.

PS: я не делаю синтаксическую ошибку, я проверяю свои таблицы и внешние ключи несколько раз.

1 Ответ

1 голос
/ 28 марта 2020

Сообщение об ошибке действительно заставляет его выглядеть так, будто ключевое слово VISIBLE не поддерживается в вашей версии MySQL / Maria DB.

Эта функция была введена в MySQL 8.0. В MariaDB он недоступен на данный момент.

Обратите внимание, что VISIBLE является настройкой по умолчанию, если она не указана, поэтому она на самом деле не нужна в вашем запросе: следующее эквивалентно (и должно работать ):

  INDEX `fk_film_actor_film_id_idx` (`film_id`),
  INDEX `fk_film_actor_actor_id_idx` (`actor_id`),
...