Почему этот файл MySQL создает отказ от таблицы?
-
30-09-2019 - |
Вопрос
Используя MySQLADMIN Tool, я пытаюсь создать таблицу. Инструмент генерирует оператор SQL, а затем переносит «Невозможно создать таблицу» без другой подсказки на какой ошибке это!
Вот :
CREATE TABLE `C121535_vubridge`.`Products` (
`pr_ID` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`pr_Name` VARCHAR(45) NOT NULL,
`pr_Type` VARCHAR(2) NOT NULL COMMENT 'H=Hand Series V=VuBridge software E=Event Subs S=Sponsoring',
`pr_AuthorID` INTEGER UNSIGNED COMMENT '= m_ID (for Bridge Hand Series',
`pr_SponsorID` INTEGER UNSIGNED NOT NULL,
`pr_DateCreation` DATETIME NOT NULL,
`pr_Price` FLOAT NOT NULL,
`pr_DescriptionText` TEXT,
`pr_Description` VARCHAR(245),
PRIMARY KEY (`pr_ID`),
CONSTRAINT `FK_prAuthor` FOREIGN KEY `FK_prAuthor` (`pr_AuthorID`)
REFERENCES `Members` (`m_ID`)
ON DELETE SET NULL
ON UPDATE NO ACTION,
CONSTRAINT `FK_Sponsor` FOREIGN KEY `FK_Sponsor` (`pr_SponsorID`)
REFERENCES `Members` (`m_ID`)
ON DELETE SET NULL
ON UPDATE NO ACTION
) ENGINE = InnoDB;
Может кто-нибудь помочь?
Решение
Таблица создания работает для меня, если я опускаю ссылки на иностранные ключи:
CREATE TABLE `Products` (
`pr_ID` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`pr_Name` VARCHAR(45) NOT NULL,
`pr_Type` VARCHAR(2) NOT NULL COMMENT 'H=Hand Series V=VuBridge software E=Event Subs S=Sponsoring',
`pr_AuthorID` INTEGER UNSIGNED COMMENT '= m_ID (for Bridge Hand Series',
`pr_SponsorID` INTEGER UNSIGNED NOT NULL,
`pr_DateCreation` DATETIME NOT NULL,
`pr_Price` FLOAT NOT NULL,
`pr_DescriptionText` TEXT,
`pr_Description` VARCHAR(245),
PRIMARY KEY (`pr_ID`)
)
... так что я склонен верить, что C121535_vubridge.MEMBERS
еще не существует. C121535_vubridge.MEMBERS
Необходимо создать до того, как запускается оператор создания таблицы для таблицы продуктов.
Другие советы
Просто разделить таблицу создания и попробуйте одну часть в то время. Таким образом, вы сможете определить одну строку, на которой она не удается.
Я отмечаю, что в справочном руководстве, что если символ подпункта приведен для пункта ограничения (в вашем случае, цитируемые ссылками перед внешним ключом в каждом пункте, FK_prAuthor
а также FK_Sponsor
) должны быть уникальными по базе данных. Они? Если нет, этот символ может быть опущен, и InnoDB присваивается автоматически.
Аналогичным образом, таблицы ваши FKS относятся к тому, не могут иметь структуру, которая ожидает, что это создание утверждает.