Ошибка 1064 при форвардной разработке диаграммы ER в рабочей среде mysql

Я пытаюсь создать схему ER в Workbench, но получаю сообщение об ошибке. Я использую mySql Workbench для Mac.

Это сообщение об ошибке, которое я получаю:

 Executing SQL script in server
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 '
  INDEX `city_id_fk_idx` (`city_id` ASC) VISIBLE,
  INDEX `county_id_idx` (`cou' at line 13
SQL Code:
        -- -----------------------------------------------------
        -- Table `k00243666_property_bubble`.`addresses`
        -- -----------------------------------------------------
        CREATE TABLE IF NOT EXISTS `k00243666_property_bubble`.`addresses` (
          `address_id` INT NOT NULL AUTO_INCREMENT,
          `address1` VARCHAR(45) NULL,
          `address2` VARCHAR(45) NULL,
          `eircode` VARCHAR(7) NULL,
          `town_id` INT NULL,
          `city_id` INT NULL,
          `county_id` INT NULL,
          PRIMARY KEY (`address_id`),
          INDEX `town_id_fk_idx` (`town_id` ASC) VISIBLE,
          INDEX `city_id_fk_idx` (`city_id` ASC) VISIBLE,
          INDEX `county_id_idx` (`county_id` ASC) VISIBLE,
          CONSTRAINT `town_id_fk`
            FOREIGN KEY (`town_id`)
            REFERENCES `k00243666_property_bubble`.`town` (`town_id`)
            ON DELETE NO ACTION
            ON UPDATE CASCADE,
          CONSTRAINT `city_id_fk`
            FOREIGN KEY (`city_id`)
            REFERENCES `k00243666_property_bubble`.`city` (`city_id`)
            ON DELETE NO ACTION
            ON UPDATE CASCADE,
          CONSTRAINT `county_id`
            FOREIGN KEY (`county_id`)
            REFERENCES `k00243666_property_bubble`.`county` (`county_id`)
            ON DELETE NO ACTION
            ON UPDATE CASCADE)
        ENGINE = InnoDB

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

Fetching back view definitions in final form.
Nothing to fetch

Кто-нибудь знает, почему я получаю эту ошибку?

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
0
2 365
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я предполагаю, что ваша версия MariaDB не поддерживает VISIBLE или INVISIBLE применительно к определению индекса. В любом случае индексы должны быть видны по умолчанию, поэтому вам даже не нужно указывать VISIBLE. Попробуйте использовать этот синтаксис:

INDEX town_id_fk_idx (town_id),
INDEX city_id_fk_idx (city_id),
INDEX county_id_idx (county_id)

Вот ссылка на запрос функции, сделанный в MariaDB. Нет синтаксиса INVISIBLE для отключения индексов оптимизатора. Однако есть альтернатива:

ALTER TABLE addresses DISABLE KEYS;

Это сделает все индексы невидимыми для оптимизатора.

Спасибо, я думаю, что это решило часть проблемы, теперь я получаю другую ошибку: Выполнение сценария SQL на сервере ОШИБКА: Ошибка 1005: Невозможно создать таблицу k00243666_property_bubble.user_status (номер ошибки: 121 «Повторяющийся ключ при записи или обновлении» )

Laur Dragulin 03.12.2018 16:25

@LaurDragulin Добро пожаловать в Stack Overflow. Сайт так не работает. Если у вас сейчас проблема, существенно отличающаяся от того, что вы задали, вам нужно открыть новый вопрос. SO - это не блог, где вы постоянно спрашиваете о дальнейших действиях.

Tim Biegeleisen 03.12.2018 16:26

Я разобрался, у меня также были дубликаты ограничений, исправил сейчас, большое спасибо Тим Бигелейзен

Laur Dragulin 03.12.2018 16:43

Также спасибо этому парню stackoverflow.com/a/20512955/10739429, это было исправлением моей второй ошибки.

Laur Dragulin 03.12.2018 16:47

Если этот ответ решил вашу проблему, вы можете принять его, щелкнув зеленую галочку слева.

Tim Biegeleisen 03.12.2018 16:52

Другие вопросы по теме