MySQL错误1005

时间:2013-03-14 10:55:19

标签: mysql sql mysql-error-1005

对,所以代码如下:

CREATE TABLE Seller (
sID INT AUTO_INCREMENT
    PRIMARY KEY,
sName CHAR (10), 
sAddress CHAR (30)
)ENGINE = INNODB;
CREATE TABLE Sale (
sID INT AUTO_INCREMENT,
iName CHAR(10),
CONSTRAINT sa_pk
    PRIMARY KEY (sID, iName),
CONSTRAINT sa_fk1
    FOREIGN KEY (sID)
    REFERENCES Seller (sID)
    ON UPDATE CASCADE,
CONSTRAINT sa_fk2
    FOREIGN KEY (iName)
    REFERENCES Item (iName)
    ON UPDATE CASCADE
)ENGINE = INNODB;
CREATE TABLE Item (
iPrice REAL,
iStock INT,
iName CHAR(10)
    PRIMARY KEY,
iDescription CHAR (30)
)ENGINE = INNODB;
CREATE TABLE Copy (
oQuantity INT,
iName CHAR(10),
CONSTRAINT co_pk
    PRIMARY KEY (oQuantity, iName),
CONSTRAINT co_fk1
    FOREIGN KEY (oQuantity)
    REFERENCES Orders (oQuantity)
    ON UPDATE CASCADE,
CONSTRAINT co_fk2
    FOREIGN KEY (iName)
    REFERENCES Item (iName)
    ON UPDATE CASCADE
)ENGINE = INNODB;
CREATE TABLE Orders (
oSeller CHAR (10),
oTypes CHAR (10),
oQuantity INT,
oPrice REAL,
oID INT AUTO_INCREMENT
    PRIMARY KEY
)ENGINE = INNODB;
CREATE TABLE Customer (
cID INT AUTO_INCREMENT
    PRIMARY KEY,
cName CHAR (10),
cAddress CHAR (30)
)ENGINE = INNODB;

我一开始就有drop命令,所以每次运行这个脚本时,除了复制和销售之外,至少所有这些都被删除了。每当我尝试删除它时它会失败,因为它们永远不会被创建我继续得到ERROR 1005(HY000)废话然后无法创建表x。 请帮助我解决这个烦人的问题。焦油!

1 个答案:

答案 0 :(得分:1)

sale表中,您有

CONSTRAINT sa_fk2 FOREIGN KEY (iName) REFERENCES Item (iName)
    ON UPDATE CASCADE

然后,您之后正在创建Item表。


要创建Copy表,您需要oQuantity表中Order字段的索引。

INDEX `oQty` (`oQuantity`)

将上面的内容添加到Order表可以创建表。

这是sqlfiddle