Почему этот оператор MySQL Create Table терпит неудачу? - PullRequest
1 голос
/ 03 декабря 2010

Используя инструмент mySQLAdmin, я пытаюсь создать таблицу.Инструмент генерирует оператор 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;

Может кто-нибудь помочь

Ответы [ 3 ]

3 голосов
/ 03 декабря 2010

CREATE TABLE работает для меня, если я опущу ссылки на внешний ключ:

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 необходимо создать до запуска оператора CREATE TABLE для таблицы PRODUCTS.

0 голосов
/ 03 декабря 2010

В справочном руководстве отмечу, что если для предложения CONSTRAINT указан символьный подпункт (в вашем случае строки в кавычках перед FOREIGN KEY в каждом предложении, FK_prAuthor и FK_Sponsor) должны быть уникальныминад базой данных.Они?Если нет, этот символ может быть опущен, и InnoDB назначит его автоматически.

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

0 голосов
/ 03 декабря 2010

Просто разделите таблицу создания и попробуйте одну часть за раз.Таким образом, вы сможете определить одну строку, на которой она не работает.

...