我敢肯定这是一件非常简单的事情,但我无法理解。
每次我尝试运行这个脚本时,都会得到错误号150。我知道这是一个外键问题。我的其他表很好,链接到projectregister表没有问题,但是出于某种原因,没有任何东西想链接到userchar表。
我在大学服务器上运行这个,所以我不能尝试显示引擎innodb状态。
有什么问题吗?
谢谢

CREATE TABLE `userchar` (
  `userid` int(5) NOT NULL,
  `charname` varchar(25) NOT NULL,
  `charstats` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`userid`,`charname`),
  CONSTRAINT `userchar_ibfk_1` FOREIGN KEY (`userid`) REFERENCES `projectregister` (`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `notes` (
  `userid` int(5) NOT NULL DEFAULT '0',
  `charname` varchar(25) NOT NULL,
  `usernote` varchar(255) NOT NULL DEFAULT '',
  PRIMARY KEY (`userid`,`charname`,`usernote`),
  CONSTRAINT `notes_ibfk_1` FOREIGN KEY (`userid`) REFERENCES `projectregister` (`userid`),
foreign key (charname) references userchar(charname)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

最佳答案

外键必须引用唯一的值—无论是主键还是普通的旧唯一索引。
在这里,您试图使notes.userid引用projectregister.userid。但是,projectregister.userid不是唯一的值-只有projectregister.useridprojectregister.charname的组合是唯一的。
您应该更改主键或外键定义,以便它们的列列表匹配。

关于mysql - 无法链接两个表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29793636/

10-10 14:38