When I was importing a Sql document, I got an error "can't add foreign key constraint". It seems that I can't use the foreign key 'cid' in the table 'book'. And the data type for the child column matches the parent column. I can't figure it out.
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;
答案 0 :(得分:0)
When you create the book table first, it tries to create references for the table category(which was not created yet), try creating the category table first,
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;
I did it on SQL fiddle and worked fine.