繁体   English   中英

无法添加外键约束

[英]Cannot add foreign key constraint

我创建了一个数据库“ webportal”。 这是我的“用户”表脚本

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  `firstName` varchar(255) DEFAULT NULL,
  `lastName` varchar(255) DEFAULT NULL,
  `dateRegistered` DATE DEFAULT NULL,
  `skypeID` int(11)  DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

这是“目录”表脚本。

DROP TABLE IF EXISTS `catalog`;
create table catalog(
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `link`  VARCHAR(100) NOT NULL,
  `comment`  VARCHAR(100) NOT NULL,
  `inserDate` DATE DEFAULT NULL,
  `content` longblob NOT NULL,
  PRIMARY KEY (`id`),
  CONSTRAINT `fk_catalog` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

当我尝试在命令行中执行第二个脚本时,出现此错误...

错误1215(HY000):无法添加外键约束。 此代码有什么问题?

似乎您使用的是旧版本的MySQL,可以在外键字段中添加INDEX子句以解决此问题:

DROP TABLE IF EXISTS `catalog`;
create table `catalog`(
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `link`  VARCHAR(100) NOT NULL,
  `comment`  VARCHAR(100) NOT NULL,
  `inserDate` DATE DEFAULT NULL,
  `content` longblob NOT NULL,
  PRIMARY KEY (`id`),
  INDEX (`user_id`),
  CONSTRAINT `fk_catalog` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM