3

我敢肯定这是非常简单的事情,但我无法理解它。

每次我尝试运行此脚本时,都会收到错误号 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;
4

1 回答 1

2

外键必须引用唯一值——无论是主键还是普通的旧唯一索引。

在这里,你试图做notes.userid参考projectregister.userid。然而,projectregister.userid并不是唯一值——只有和的组合projectregister.userid才是projectregister.charname唯一的。

您应该更改主键或外键定义,以便它们的列列表匹配。

于 2015-04-22T09:50:38.460 回答