当我导入Sql文档时,出现错误“无法添加外键约束”。看来我不能使用表“book”中的外键“cid”。并且子列的数据类型与父列匹配。我想不通。
CREATE TABLE `book` (
`bid` char(32) NOT NULL,
`bname` varchar(100) DEFAULT NULL,
`price` decimal(10,2) DEFAULT NULL,
`author` varchar(50) DEFAULT NULL,
`image` varchar(200) DEFAULT NULL,
`cid` char(32) DEFAULT NULL,
`isdel` tinyint(1) DEFAULT NULL,
PRIMARY KEY (`bid`),
KEY `cid` (`cid`),
CONSTRAINT `book_ibfk_1` FOREIGN KEY (`cid`) REFERENCES `category` (`cid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `category` (
`cid` char(32) NOT NULL,
`cname` varchar(50) DEFAULT NULL,
PRIMARY KEY (`cid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
最佳答案
当您首先创建图书表时,它会尝试为表类别(尚未创建)创建引用,请先尝试创建类别表,
CREATE TABLE `category` (
`cid` char(32) NOT NULL,
`cname` varchar(50) DEFAULT NULL,
PRIMARY KEY (`cid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `book` (
`bid` char(32) NOT NULL,
`bname` varchar(100) DEFAULT NULL,
`price` decimal(10,2) DEFAULT NULL,
`author` varchar(50) DEFAULT NULL,
`image` varchar(200) DEFAULT NULL,
`cid` char(32) DEFAULT NULL,
`isdel` tinyint(1) DEFAULT NULL,
PRIMARY KEY (`bid`),
KEY `cid` (`cid`),
CONSTRAINT `book_ibfk_1` FOREIGN KEY (`cid`) REFERENCES `category` (`cid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
我是在 SQL fiddle 上完成的并且工作得很好。
关于Mysql导入sql文档时报错无法添加外键约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33445380/