因此,我作为项目需求试图将外键约束添加到数据库中,并且它第一次或在两个不同的表上运行,但是在尝试添加外键约束时,我在两个表上遇到错误。我收到的错误消息是:

错误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 = InnoDB

DEFAULT 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 = InnoDB

DEFAULT CHARACTER SET = utf8;

-- -----------------------------------------------------

-- Table `doctorsoffice`.`Patient`

-- -----------------------------------------------------

DROP TABLE IF EXISTS `doctorsoffice`.`Patient` ;

CREATE TABLE IF NOT EXISTS `doctorsoffice`.`Patient` (

`PatientID` INT unsigned NOT NULL AUTO_INCREMENT ,

`FName` VARCHAR(30) NULL ,

`LName` VARCHAR(45) NULL ,

`Gender` CHAR NULL ,

`DOB` DATE NULL ,

`SSN` DOUBLE NULL ,

`MedicalHistory` smallint(5) unsigned NOT NULL,

`PrimaryPhysician` smallint(5) unsigned NOT NULL,

PRIMARY KEY (`PatientID`) ,

UNIQUE INDEX `PatientID_UNIQUE` (`PatientID` ASC) ,

CONSTRAINT `FK_MedicalHistory`

FOREIGN KEY (`MEdicalHistory` )

REFERENCES `doctorsoffice`.`medicalhistory` (`MedicalHistoryID` )

ON DELETE CASCADE

ON UPDATE CASCADE,

CONSTRAINT `FK_PrimaryPhysician`

FOREIGN KEY (`PrimaryPhysician` )

REFERENCES `doctorsoffice`.`doctor` (`DoctorID` )

ON DELETE CASCADE

ON UPDATE CASCADE)

ENGINE = InnoDB;

-- -----------------------------------------------------

-- Table `doctorsoffice`.`Appointment`

-- -----------------------------------------------------

DROP TABLE IF EXISTS `doctorsoffice`.`Appointment` ;

CREATE TABLE IF NOT EXISTS `doctorsoffice`.`Appointment` (

`AppointmentID` smallint(5) unsigned NOT NULL AUTO_INCREMENT ,

`Date` DATE NULL ,

`Time` TIME NULL ,

`Patient` smallint(5) unsigned NOT NULL,

`Doctor` smallint(5) unsigned NOT NULL,

PRIMARY KEY (`AppointmentID`) ,

UNIQUE INDEX `AppointmentID_UNIQUE` (`AppointmentID` ASC) ,

CONSTRAINT `FK_Patient`

FOREIGN KEY (`Patient` )

REFERENCES `doctorsoffice`.`Patient` (`PatientID` )

ON DELETE CASCADE

ON UPDATE CASCADE,

CONSTRAINT `FK_Doctor`

FOREIGN KEY (`Doctor` )

REFERENCES `doctorsoffice`.`doctor` (`DoctorID` )

ON DELETE CASCADE

ON UPDATE CASCADE)

ENGINE = InnoDB;

-- -----------------------------------------------------

-- Table `doctorsoffice`.`InsuranceCompany`

-- -----------------------------------------------------

DROP TABLE IF EXISTS `doctorsoffice`.`InsuranceCompany` ;

CREATE TABLE IF NOT EXISTS `doctorsoffice`.`InsuranceCompany` (

`InsuranceID` smallint(5) NOT NULL AUTO_INCREMENT ,

`Name` VARCHAR(50) NULL ,

`Phone` DOUBLE NULL ,

PRIMARY KEY (`InsuranceID`) ,

UNIQUE INDEX `InsuranceID_UNIQUE` (`InsuranceID` ASC) )

ENGINE = InnoDB;

-- -----------------------------------------------------

-- Table `doctorsoffice`.`PatientInsurance`

-- -----------------------------------------------------

DROP TABLE IF EXISTS `doctorsoffice`.`PatientInsurance` ;

CREATE TABLE IF NOT EXISTS `doctorsoffice`.`PatientInsurance` (

`PolicyHolder` smallint(5) NOT NULL ,

`InsuranceCompany` smallint(5) NOT NULL ,

`CoPay` INT NOT NULL DEFAULT 5 ,

`PolicyNumber` smallint(5) NOT NULL AUTO_INCREMENT ,

PRIMARY KEY (`PolicyNumber`) ,

UNIQUE INDEX `PolicyNumber_UNIQUE` (`PolicyNumber` ASC) ,

CONSTRAINT `FK_PolicyHolder`

FOREIGN KEY (`PolicyHolder` )

REFERENCES `doctorsoffice`.`Patient` (`PatientID` )

ON DELETE CASCADE

ON UPDATE CASCADE,

CONSTRAINT `FK_InsuranceCompany`

FOREIGN KEY (`InsuranceCompany` )

REFERENCES `doctorsoffice`.`InsuranceCompany` (`InsuranceID` )

ON DELETE CASCADE

ON UPDATE CASCADE)

ENGINE = InnoDB;

USE `doctorsoffice` ;

SET SQL_MODE=@OLD_SQL_MODE;

SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;

SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

copay mysql数据库_MySQL无法添加外键约束相关推荐

  1. (19)一篇掌握MySQL数据库基础下 基本操作(外键约束、建表原则、多表查询、子查询)

    MySQL数据库基础下 一.修改表--添加外键约束 二.多表之间的建表原则 1.建数据库原则:通常情况下,一个项目/应用建一个数据库 2.多表之间的表原则: (1)一对多:分类和商品 (一个分类对应多 ...

  2. MySQL:错误代码1215 无法添加外键约束的解决思路

    环境说明: ※MySQL ver:5.7 当你需要添加外键约束的时候,却发现mysql报了个1215错误,一脸懵逼的找到这个博客,那你的问题可能就会得到解决. 解决思路 1.检查两个字段的数据类型是否 ...

  3. mysql给一个表添加外键约束_Mysql添加外键约束

    简单说一下使用外键的好处 1.完整性约束 比如: 用户表中有字段 用户编号(id) , 名称(username) 设备表中有字段 设备编号(id) , 设备名称(devicename) 设备属于的用户 ...

  4. mysql给表加外键约束_MySQL为表添加外键约束

    为表添加外键约束的语法 Alter table 表名 add constraint FK_ID foreign key(外键字段名) REFERENCES 外表表名(主键字段名): 为表student ...

  5. mysql添加外键约束的语法_Mysql添加外键约束.

    最近学习遇到一条添加外键约束的语句,记录下来. alter table selection add constraint FK_Reference_1 foreign key(course) refe ...

  6. 使用MySQL数据库创建表时添加外键约束

    /题目:创建表Book表,字段如下: bid整型,要求主键 bname学符型,要求设置唯一键,并非空 price浮点型,要求有默认值10 btypeId 类型编号,要求引用bookType表的id字段 ...

  7. MySQL为表添加外键约束

    为表添加外键约束的语法 Alter table 表名 add constraint FK_ID foreign key(外键字段名) REFERENCES 外表表名(主键字段名): 为表student ...

  8. MySQL可以生成E-R图嘛_使用Navicat for mysql生成E-R图,添加外键约束

    1. E-R图生成 用 mysql的Navicat Premium图形界面工具 . 可以生成E-R图. 把你的数据库选中后右键 , 选择"逆向表到模型" 就可以了 2.添加外键约束 ...

  9. mysql外键约束分数_MySQL提高(外键约束)

    外键约束 1.条件语句的写法 在sql中可以通过'where 条件语句' 来对操作对象进行筛选 -筛选 a.比较运算符:=,<>,,<=,>= 注意:判断一个字段的值是否为空不 ...

最新文章

  1. C/C++中“#”和“##”的作用和用法
  2. 美团方法论,苦练基本功
  3. 《预训练周刊》第21期:FlipDA:有效且稳健的数据增强小样本学习、开放域低资源适应的生成式聊天机器人...
  4. EXE 文件打不开的处理办法
  5. 稀疏编码(Sparse Coding)(二)
  6. PHP面试题:你常用到的mysql命令?
  7. AgileEAS.NET之ORM访问器
  8. POJ - 1904 King's Quest(强连通缩点)
  9. maven本地库已经有的包了,如何不下载(linux环境)
  10. android cordova 教程,cordova入门教程(一)
  11. Bluetooth篇 开发实例之六 蓝牙RSSI计算距离
  12. SQL Server 2005中设置Reporting Services发布web报表的匿名访问
  13. 多线多IP的服务器配置
  14. 预训练模型:一种低资源实体NER标注的方法
  15. 适合python组态软件_组态软件哪个好
  16. imdisk 想说爱你不容易
  17. 使用gui来初始化参数matlab,MATLAB GUI参数传递方式
  18. mysql 免费报表工具_10款最出色的免费数据库管理工具
  19. hdu 2545 树上战争
  20. 如何快速三个月成为一个领域的高手的四个方法

热门文章

  1. Linux(入门基础):04---文件的压缩、解压、打包(gzip、bzip2、xz、tar)
  2. csdn博客栏目装修大全
  3. 如何把m4v转换成mp4?
  4. 宏基计算机设置硬盘启动不了,宏基笔记本设置U盘启动的简单步骤
  5. CC-IP0101 51410056-175霍尼韦尔接口板
  6. 计算机组成原理实验 单总线CPU设计(变长指令周期3级时序)(HUST)思路总结
  7. 【C语言】typedef的用法简析
  8. 苹果13无线充电宝推荐,最适合苹果13的无线充电宝盘点
  9. linux中一切都是文件_在Linux中,“一切都是文件”是什么意思?
  10. 高仿精仿QQ空间ios源码