亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

MySQL無法添加外鍵約束

MySQL無法添加外鍵約束

滄海一幻覺 2019-07-08 16:08:54
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條經驗 獲得超13個贊

要查找特定錯誤,請運行以下命令:

SHOW ENGINE INNODB STATUS;

看看LATEST FOREIGN KEY ERROR部分。

子列的數據類型必須與父列完全匹配。例如,因為medicalhistory.MedicalHistoryIDINTPatient.MedicalHistory也需要是INT,而不是SMALLINT.

此外,您應該運行該查詢。set foreign_key_checks=0在運行DDL之前,您可以任意順序創建表,而不必在相關子表之前創建所有父表。


查看完整回答
反對 回復 2019-07-08
?
交互式愛情

TA貢獻1712條經驗 獲得超3個贊

我把一個字段設置為“未簽名”,另一個沒有。一旦我將兩列都設置為未簽名,它就能工作了。


查看完整回答
反對 回復 2019-07-08
?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

  • 發動機

    應該是一樣的

    例如InnoDB

  • 數據類型

    應該是一樣的,長度也是一樣的。

    例如VARCHAR(20)

  • 校對

    列字符集應該是相同的。

    例如UTF8
    注意:即使您的表具有相同的排序規則,列也可能有不同的排序規則。

  • 獨樹一幟

    -外鍵應指唯一的字段

    (通常是主鍵)

    在參考表中。


查看完整回答
反對 回復 2019-07-08
  • 3 回答
  • 0 關注
  • 1303 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號