MySQL FOREIGN键不起作用

时间:2011-03-19 17:53:47

标签: mysql foreign-keys

我在这里发布了一个问题,根据我正在尝试创建以下MySQL表的响应,但它不起作用,但是,如果我删除它工作的两个外来命令

$query="CREATE TABLE IF NOT EXISTS picture(
ID INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(ID)
)ENGINE=InnoDB";
mysql_query($query,$con);

$query="CREATE TABLE IF NOT EXISTS user(
ID INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(ID)
)ENGINE=InnoDB";
mysql_query($query,$con);

$query="CREATE TABLE IF NOT EXISTS pictureRating
(
ID INT NOT NULL AUTO_INCREMENT,
pictureID INT NOT NULL,
userID INT NOT NULL,
rater INT NOT NULL,
creationDate TIMESTAMP DEFAULT NOW(),
context VARCHAR(150),
rating TINYINT,

PRIMARY KEY (ID),
FOREIGN KEY (pictureID) REFERENCES picture(ID) ON UPDATE CASCADE,
FOREIGN KEY (userID) REFERENCES user(ID) ON UPDATE CASCADE
)ENGINE=InnoDB";
mysql_query($query,$con)

我无法弄清楚为什么表格无法创建

1 个答案:

答案 0 :(得分:3)

在运行脚本之前,您需要删除所有三个表

仅删除pictureRating表是不够的。您可能拥有前两个表的旧版本,这可能导致第三个表的创建失败并带有外键约束,但是当您省略它们时会成功。

当我删除所有三个表然后尝试运行命令时,它可以正常工作。