使用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;

有人可以帮忙吗?

有帮助吗?

解决方案

如果我省略了外国密钥参考,则创建表对我有用:

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_prAuthorFK_Sponsor)必须在数据库上是唯一的。他们是吗?如果没有,则可以省略该符号,并且可以自动分配InnoDB。

同样,您的FKS所指的表可能没有此创建语句期望的结构。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top