EDIT: Пожалуйста, прочтите эту проблему, прежде чем опубликовать свой ответ :(Я знаю, что UNIQUE не должен быть здесь. Я использую MySQL Workbench для организации моей базы данных и по неизвестной причине решил поставить УНИКАЛЬНО здесь с сегодняшнего утра. Это проблема.Ошибка синтаксиса MySql Workbench
Когда я создаю 10 таблиц со многими взаимосвязями, я синхронизую свою базу данных с диаграммой из MySql Workbench. Так как у меня есть «UNIQUE» там и там, я не могу синхронизировать что-либо, потому что я получил ошибки. И скопировать все вложения в блокнот для их отладки не вариант: p
Вопрос в том, почему MySql Workbench ставит эти неправильные UNIQUE в операторах create table?
Спасибо за вашу помощь :)
У меня странные ошибки, когда я пытаюсь синхронизировать модель с базой данных.
Создание таблицы заявление делает ошибку:
CREATE TABLE IF NOT EXISTS `barometres`.`brm_questions` (
`id` INT(10) UNIQUE UNSIGNED NOT NULL AUTO_INCREMENT,
`theme_id` INT(10) UNIQUE UNSIGNED NOT NULL,
`question_type_id` TINYINT(3) NOT NULL,
`type` TINYINT(1) NULL DEFAULT NULL,
`reference` TINYINT(1) NULL DEFAULT NULL,
`created_at` DATETIME NOT NULL,
`updated_at` DATETIME NULL DEFAULT NULL,
`deleted_at` DATETIME NULL DEFAULT NULL,
INDEX `fk_brm_questions_brm_themes1_idx` (`theme_id` ASC),
INDEX `fk_brm_questions_brn_questions-types1_idx` (`question_type_id` ASC),
PRIMARY KEY (`id`),
CONSTRAINT `fk_brm_questions_brm_themes1`
FOREIGN KEY (`theme_id`)
REFERENCES `barometres`.`brm_themes` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_brm_questions_brn_questions-types1`
FOREIGN KEY (`question_type_id`)
REFERENCES `barometres`.`brn_questions-types` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
Это нормально, столбец Идентификатор не должен быть помечен как UNIQUE (так как я не проверял его в Workbench) и UNSIGNED должны быть перед УНИКАЛЬНО в любом случае.
Поскольку UNSIGNED есть после UNIQUE, я получил эту ошибку для каждой таблицы в моей модели:
ERROR: Error 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 'UNSIGNED NOT NULL AUTO_INCREMENT,
`theme_id` INT(10) UNIQUE UNSIGNED NOT NULL,' at line 2
Как вы можете видеть, theme_id столбец также отмечен как UNIQUE, даже если я не проверял это тоже.
Все мои таблицы имеют одинаковую проблему, и я действительно не знаю, как ее решить без ручного изменения всех утверждений в блокноте.
У вас есть вопросы, почему у workbench есть это поведение? Это Workbench 6.3.9, и та же модель делает ту же ошибку на 6.3.6
Большое спасибо за помощь.
Энтони
Вы не можете использовать UNIQUE в определении столбца. Вместо этого вы создадите уникальный индекс в этом столбце после спецификаций столбца. –