错误代码:1215无法添加外键约束

时间:2016-06-24 15:46:09

标签: mysql foreign-keys mysql-workbench

我正在尝试创建健康管理数据库,我收到此错误。有什么问题?

-- table glocation

CREATE TABLE `MOH`.`glocation` (
`street` VARCHAR(20) NOT NULL,
`city` VARCHAR(20) NOT NULL,
`state` VARCHAR(20) NOT NULL,
`geolocation` INT(8),
PRIMARY KEY (`street`, `city`, `state`));

-- table patient

CREATE TABLE `MOH`.`patient` (
`PID` INT(6) zerofill UNSIGNED NOT NULL AUTO_INCREMENT,
`first_name` VARCHAR(45) NOT NULL,
`last_name` VARCHAR(45) NOT NULL,
`sex` VARCHAR(10),
`b_insurance` VARCHAR(45),
`s_insurance` VARCHAR(45),
`education` VARCHAR(20),
`job` VARCHAR(20),
`street` VARCHAR(20),
`city` VARCHAR(20),
`state` VARCHAR(20),
`date_of_birth` date,
`license` boolean,
PRIMARY KEY (`PID`),
CONSTRAINT `street`
  FOREIGN KEY (`street`)
  REFERENCES `MOH`.`glocation` (`street`),
CONSTRAINT `city`
  FOREIGN KEY (`city`)
  REFERENCES `MOH`.`glocation` (`city`),
CONSTRAINT `state`
  FOREIGN KEY (`state`)
  REFERENCES `MOH`.`glocation` (`state`));

错误是:

  

CREATE TABLE MOHpatient(...)错误代码:1215。无法添加   外键约束

1 个答案:

答案 0 :(得分:1)

我认为这是因为您尝试单独制作patient.streetpatient.citypatient.state个外键但它们不是 glocation中的主键主键。

尝试将组合列设为单个外键,如

CONSTRAINT location
  FOREIGN KEY (street, city, state)
  REFERENCES glocation (street, city, state)

我认为无论如何在你的项目环境中更有意义。 (您尝试定义的三个独立约束允许使用'El Camino Real', 'New York City', 'Florida'之类的无意义组合,只要每个独立存在于glocation中。)< / p>