почему в моем скрипте возникает ошибка 1064, когда я его выполняю

MySQL

Код ошибки: 1064. У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования рядом с ') ENGINE = InnoDB' в строке 7.

CREATE TABLE IF NOT EXISTS `game_review`.`users` (
  `user_id` INT NOT NULL AUTO_INCREMENT,
  `email_address` VARCHAR(45) NOT NULL,
  `password` VARCHAR(6) NOT NULL,
  `username` VARCHAR(20) NOT NULL,
  PRIMARY KEY (`user_id`),
  UNIQUE INDEX `user_id_UNIQUE` (`user_id` ASC) VISIBLE)
ENGINE = InnoDB;

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


person kovan chew    schedule 21.12.2018    source источник
comment
Что такое VISIBLE? Кажется, это не ключевое слово в документации MariaDB CREATE TABLE.   -  person David Maze    schedule 21.12.2018
comment
@DavidMaze Невидимые индексы поддерживаются в MySQL 8.   -  person Tim Biegeleisen    schedule 21.12.2018
comment
На самом деле я не уверен, потому что я начал с этого только в течение 1 месяца, поэтому я просто продвигаю разработку, и это дает мне этот результат. но все же большое спасибо за редактирование моего вопроса. Очень ценится   -  person kovan chew    schedule 21.12.2018
comment
Удалите строку UNIQUE INDEX; это избыточно, потому что PRIMARY KEY является уникальным индексом.   -  person Rick James    schedule 21.12.2018


Ответы (1)


MariaDB не поддерживает невидимые индексы, поэтому ключевые слова VISIBLE и INVISIBLE не используются. Индексы уже видны оптимизатору по умолчанию, поэтому вы можете просто использовать:

UNIQUE INDEX user_id_UNIQUE (user_id)

Но столбец первичного ключа уже должен быть уникальным, поэтому вы, вероятно, можете просто не включать уникальный индекс.

Примечание: MySQL 8+ поддерживает невидимые индексы, см. здесь, но ваша версия MariaDB, похоже, их не поддерживает.

person Tim Biegeleisen    schedule 21.12.2018
comment
Большое тебе спасибо. Это работает, когда я добавляю этот УНИКАЛЬНЫЙ ИНДЕКС user_id_UNIQUE (user_id), но могу ли я спросить, как насчет ASC? Моя версия MariaDB — 10.1.36-MariaDB. - person kovan chew; 21.12.2018
comment
Индексы в MySQL/MariaDB по умолчанию должны возрастать, поэтому вы можете просто опустить ключевое слово ASC. - person Tim Biegeleisen; 21.12.2018
comment
О, извините, сэр, у меня еще одна проблема. Есть ошибка для моей другой таблицы. Это код ошибки: 1064. У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования рядом с ' INDEX user_id_idx (iduser ASC) VISIBLE, INDEX game_id_idx (idgame A' в строке 7 - person kovan chew; 21.12.2018
comment
Используйте 1_ - person Tim Biegeleisen; 21.12.2018