#mysql #database #alter
#mysql #База данных #изменить
Вопрос:
Я продолжаю получать эту ошибку sql
"#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Option (OptionId)' at line 1"
когда я пытаюсь добавить внешний ключ в поле OptionId из таблицы вопросов в поле OptionId (pk) в поле Option. Я не понимаю, почему я продолжаю получать ошибку, потому что я не вижу, что с ней не так.
Ниже приведено ограничение внешнего ключа с использованием ALTER TABLE:
ALTER TABLE Question ADD CONSTRAINT FK_OptionId FOREIGN KEY (OptionId) REFERENCES Option (OptionId)
Имена таблиц и синтаксис верны, я убедился в этом путем двойной проверки.
Почему это не работает?
Комментарии:
1. # 1064, похоже, является общим сообщением mysql, в котором речь идет об ограничениях. я получил это при попытке СОЗДАТЬ ВНЕШНИЙ КЛЮЧ в существующей таблице (ржавый!). ваш вопрос напомнил мне, что мне пришлось ИЗМЕНИТЬ ТАБЛИЦУ. итак, я проголосовал за вас. спасибо!
Ответ №1:
option
является зарезервированным словом в MySQL и должно быть окружено обратными метками.
ALTER TABLE Question
ADD CONSTRAINT FK_OptionId FOREIGN KEY (OptionId)
REFERENCES `Option` (OptionId)
Комментарии:
1. Большое спасибо, я не знал, что option уже является резервным словом, спасибо
2. символ «`» также позволяет использовать более широкий набор символов при именовании переменных и таблиц, включая ПРОБЕЛЫ. исходя из стиля и процедуры, я бы предпочел не использовать его («` «) и попросил MySQL проверить целостность имени для меня (что становится ДЕЙСТВИТЕЛЬНО необходимым, если вы переносите свою БД на другой DBEngine). слава MichaelMior