为什么MySQL Create Table语句失败?
使用mySQLAdmin工具,我尝试创建一个表。该工具生成SQL语句,然后在不知道是什么错误的情况下回复“无法创建表” 这是:为什么MySQL Create Table语句失败?,sql,mysql,mysql-error-1005,Sql,Mysql,Mysql Error 1005,使用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
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。在运行PRODUCTS表的CREATE TABLE语句之前,需要创建成员。我在参考手册中注意到,如果为CONSTRAINT子句指定了符号子项(在您的情况下,每个子句中外键前的反引号字符串,FK_prAuthor
和FK_赞助商
)在数据库中必须是唯一的。是否是唯一的?如果不是,可以省略该符号,InnoDB将自动分配
类似地,FK引用的表可能没有此create语句所期望的结构。很可能现有数据未通过约束,或者这会导致单独的错误?