MySQL无法添加外键约束因此,我试图将外键约束作为项目要求添加到我的数据库中,并且它第一次或两次在不同的表上工作,但是我有两个表,当我试图添加外键约束时,会在两个表上出错。我得到的错误消息是:错误1215(HY000):无法添加外键约束这是我用来创建表的SQL,两个违规的表是Patient和Appointment.SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=1;SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';CREATE SCHEMA IF NOT EXISTS `doctorsoffice` DEFAULT CHARACTER SET utf8 ;USE `doctorsoffice` ;-- ------------------------------------------------------- Table `doctorsoffice`.`doctor`-- -----------------------------------------------------DROP TABLE IF EXISTS `doctorsoffice`.`doctor` ;CREATE TABLE IF NOT EXISTS `doctorsoffice`.`doctor` ( `DoctorID` INT(11) NOT NULL AUTO_INCREMENT , `FName` VARCHAR(20) NULL DEFAULT NULL , `LName` VARCHAR(20) NULL DEFAULT NULL , `Gender` VARCHAR(1) NULL DEFAULT NULL , `Specialty` VARCHAR(40) NOT NULL DEFAULT 'General Practitioner' , UNIQUE INDEX `DoctorID` (`DoctorID` ASC) , PRIMARY KEY (`DoctorID`) )ENGINE = InnoDBDEFAULT CHARACTER SET = utf8;-- ------------------------------------------------------- Table `doctorsoffice`.`medicalhistory`-- -----------------------------------------------------DROP TABLE IF EXISTS `doctorsoffice`.`medicalhistory` ;CREATE TABLE IF NOT EXISTS `doctorsoffice`.`medicalhistory` ( `MedicalHistoryID` INT(11) NOT NULL AUTO_INCREMENT , `Allergies` TEXT NULL DEFAULT NULL , `Medications` TEXT NULL DEFAULT NULL , `ExistingConditions` TEXT NULL DEFAULT NULL , `Misc` TEXT NULL DEFAULT NULL , UNIQUE INDEX `MedicalHistoryID` (`MedicalHistoryID` ASC) , PRIMARY KEY (`MedicalHistoryID`) )ENGINE = InnoDBDEFAULT CHARACTER SET = utf8;
3 回答
红颜莎娜
TA贡献1842条经验 获得超12个赞
SHOW ENGINE INNODB STATUS;
LATEST FOREIGN KEY ERROR
medicalhistory.MedicalHistoryID
INT
, Patient.MedicalHistory
INT
SMALLINT
.
set foreign_key_checks=0
叮当猫咪
TA贡献1776条经验 获得超12个赞
发动机
应该是一样的 例如InnoDB
数据类型
应该是一样的,长度也是一样的。 例如VARCHAR(20)
校对
列字符集应该是相同的。 例如UTF8
注意:即使您的表具有相同的排序规则,列也可能有不同的排序规则。独树一帜
-外键应指唯一的字段 (通常是主键)
在参考表中。
添加回答
举报
0/150
提交
取消