Mysql导入sql文档时报错无法添加外键约束

标签 mysql

当我导入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/

相关文章:

php - MySQL:如何存储/检索艺术家信息?

mysql - 如何使用 "sync"/revision-control 整个 mysql 数据库以及所有 git 提交和 checkout ?

c# - 是否可以从 listview 获取值并将其转发到 Windows 窗体中的 DataGridView?

mysql - 仅使用一个条件检索两个数据 ID

mysql - SQL查询打破月末的预订日期?

mysql - 将多行数据插入一行mysql

mysql - DATEDIFF 不在触发器内相乘

mysql - 使用数据库进行日志记录

python - SqlAlchemy 连接字符串

mysql - 低效查询