MySQL ไม่สามารถเพิ่มข้อ จำกัด ต่างประเทศ


314

ดังนั้นฉันจึงพยายามเพิ่มข้อ จำกัด Foreign Key ลงในฐานข้อมูลของฉันเป็นข้อกำหนดของโครงการและทำงานเป็นครั้งแรกหรือสองครั้งในตารางที่แตกต่างกัน แต่ฉันมีสองตารางที่ฉันได้รับข้อผิดพลาดเมื่อพยายามเพิ่มข้อ จำกัด Foreign Key ข้อความแสดงข้อผิดพลาดที่ฉันได้รับคือ:

ข้อผิดพลาด 1215 (HY000): ไม่สามารถเพิ่มข้อ จำกัด กุญแจต่างประเทศ

นี่คือ SQL ฉันใช้ในการสร้างตารางทั้งสองตารางที่กระทำผิดมีและPatientAppointment

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;

คำตอบ:


779

ในการค้นหาข้อผิดพลาดเฉพาะให้ทำดังนี้

SHOW ENGINE INNODB STATUS;

และดูในLATEST FOREIGN KEY ERRORส่วน

ชนิดข้อมูลสำหรับคอลัมน์ลูกจะต้องตรงกับคอลัมน์หลัก ยกตัวอย่างเช่นตั้งแต่medicalhistory.MedicalHistoryIDเป็นINT, Patient.MedicalHistoryนอกจากนี้ยังมีความต้องการที่จะไม่INTSMALLINT

นอกจากนี้คุณควรเรียกใช้แบบสอบถามset foreign_key_checks=0ก่อนเรียกใช้ DDL เพื่อให้คุณสามารถสร้างตารางในลำดับโดยพลการแทนที่จะต้องการสร้างตารางหลักทั้งหมดก่อนตารางย่อยที่เกี่ยวข้อง


3
ขอบคุณทั้งความไม่สอดคล้องกันของชนิดข้อมูลและ foreign_key_checks แก้ไขปัญหา!
joshuaegclark

30
เกิดจากการเปรียบเทียบที่แตกต่างกันในตารางสำหรับฉันหนึ่งคือ UTF-8 และอื่น ๆ คือละติน 1
ug_

6
นอกจากนี้ยังต้องตรวจสอบให้แน่ใจว่าฉันได้ตรวจสอบ "ไม่ได้ลงนาม" เพราะนี่เป็น INT ที่ไม่ได้ลงนามแม้ว่าฉันจะตรงกับประเภทและความยาว
timbrown

1
ตารางของฉันถูกสร้างขึ้นโดยอัตโนมัติด้วยเอนจิ้น MyISAM! ขอบคุณไอค์
Captain Hypertext

3
ขอบคุณ ผมพยายามที่จะset nullอยู่บนลบ not nullแต่คอลัมน์
Matt

142

ฉันได้ตั้งค่าหนึ่งฟิลด์เป็น "ไม่ได้ลงชื่อ" และอีกฟิลด์หนึ่งไม่ เมื่อฉันตั้งค่าคอลัมน์ทั้งสองเป็นไม่ได้ลงชื่อก็จะทำงาน


ฮ่า ๆ ๆ MySQL สามารถใช้การจัดการข้อผิดพลาดที่แม่นยำยิ่งขึ้นกับสิ่งประเภทนี้
dave

82
  • เอ็นจิ้นควรเหมือนกันเช่น InnoDB
  • ประเภทข้อมูลควรเหมือนกันและมีความยาวเท่ากัน เช่น VARCHAR (20)
  • ชุดอักขระคอลัมน์การเรียงควรจะเหมือนกัน เช่น utf8
    Watchout: แม้ว่าตารางของคุณจะมี Collation เดียวกันคอลัมน์ก็อาจมีคอลัมน์ที่ต่างกันได้
  • ไม่ซ้ำกัน - คีย์ต่างประเทศควรอ้างถึงฟิลด์ที่ไม่ซ้ำกัน(โดยปกติคือคีย์หลัก)ในตารางอ้างอิง

1
คำตอบที่ดีที่สุดหลังจากที่ได้ลองเกือบทุกอย่างปรากฎว่าฉันต้องเพิ่มลงuniqueในคอลัมน์ตารางอ้างอิงอย่างชัดเจนแม้ว่าจะเป็นPrimary Key!!
ยะห์ยา

ใช่คำตอบที่ดีที่สุดที่เคย ... โดยเฉพาะอย่างยิ่งเฟอร์แรก! ในกรณีของฉันฉันทำการโยกย้าย (จอง 2.5.14 ไปยัง bookd 2.7.2) ซึ่งสคริปต์การย้ายข้อมูลไม่ได้เปลี่ยนเอ็นจิ้นฐานข้อมูลดังนั้นเมื่อสร้างตารางใหม่ฉันได้รับข้อผิดพลาดนี้
แบร์นฮาร์ด

ที่ดีที่สุดตอบฉันด้วย
EngineerCoder

จะยิ่งน่ากลัวยิ่งขึ้นด้วยเคล็ดลับสำหรับวิธีการตรวจสอบ / เปลี่ยนแปลง สำหรับฉันมันเป็นความแตกต่างของการจัดเรียงคอลัมน์ระดับ (ขอบคุณสำหรับความคิด!) และสิ่งนี้ทำให้ฉันแก้ไข: stackoverflow.com/questions/1294117/ …
sjgp

18

ลองใช้คีย์หลักของคุณชนิดเดียวกัน - int (11) - บนแป้นต่างประเทศ - smallint (5) - เช่นกัน

หวังว่ามันจะช่วย!


mysql> สร้าง index index_bar_id เฉพาะบน foos (bar_id); ... mysql> แก้ไขตาราง foos เพิ่มข้อ จำกัด index_bar_id foreign key (bar_id) บาร์อ้างอิง (id); sixarm.com/about/…
CookieCoder

11

ยืนยันว่าการเข้ารหัสตัวอักษรและการเรียงสำหรับสองตารางเหมือนกัน

ในกรณีของตัวเองหนึ่งของตารางได้ใช้utf8และอื่น ๆ latin1ที่ใช้

ฉันมีอีกกรณีที่การเข้ารหัสเหมือนกัน แต่การเปรียบเทียบแตกต่างกัน หนึ่งutf8_general_ciอื่น ๆutf8_unicode_ci

คุณสามารถเรียกใช้คำสั่งนี้เพื่อตั้งค่าการเข้ารหัสและการเรียงสำหรับตาราง

ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

ฉันหวังว่านี่จะช่วยให้ใครบางคน


Nice one @Adegoke คำตอบที่ดี
Edwin Ikechukwu Okonkwo

7

ในการตั้งคีย์ต่างประเทศในตาราง B คุณต้องตั้งค่าคีย์ในตาราง A

ในตาราง A: INDEX id( id)

แล้วในตาราง B

CONSTRAINT `FK_id` FOREIGN KEY (`id`) REFERENCES `table-A` (`id`)

ฉันไม่แน่ใจว่าสิ่งที่คุณพูด แต่ฉันพบว่าไวยากรณ์ของฉันไม่ถูกต้อง ฉันกำลังทำ: แก้ไขตารางเครื่องบินเพิ่มข้อ จำกัด fk_somehting_unique foreign key (operator_id) รหัสอ้างอิงองค์กร แต่ควรทำ: แก้ไขตารางการบินเพิ่มข้อ จำกัด fk_somehting_unique foreign key (operator_id) รหัสอ้างอิงองค์กร(id) ;
Michael Coxon

7

ฉันมีปัญหาเดียวกันและวิธีแก้ก็ง่ายมาก การแก้ไข: รหัสต่างประเทศที่ประกาศในตารางไม่ควรตั้งค่าเป็นไม่เป็นโมฆะ

การอ้างอิง: ถ้าคุณระบุการกระทำ SET NULL ตรวจสอบให้แน่ใจว่าคุณไม่ได้ประกาศคอลัมน์ในตารางลูกเป็น NOT NULL ( อ้างอิง )


4

ตรวจสอบกฎต่อไปนี้:

  • ขั้นแรกตรวจสอบว่าชื่อได้รับสิทธิ์สำหรับชื่อตารางหรือไม่

  • ชนิดของข้อมูลที่สองที่เหมาะสมให้กับต่างประเทศที่สำคัญ?


4

โปรดตรวจสอบให้แน่ใจว่าทั้งสองตารางอยู่ในรูปแบบ InnoDB แม้ว่าจะอยู่ในรูปแบบ MyISAM ก็ตามข้อ จำกัด foreign key จะไม่ทำงาน

อีกอย่างคือว่าทั้งสองฟิลด์ควรเป็นประเภทเดียวกัน หากหนึ่งคือ INT ดังนั้นอื่น ๆ ควรเป็น INT ถ้ามีใครเป็น VARCHAR คนอื่นก็ควรเป็น VARCHAR เป็นต้น


3

ฉันประสบปัญหาและสามารถแก้ไขได้โดยตรวจสอบให้แน่ใจว่าประเภทข้อมูลนั้นตรงกันทุกประการ

ฉันใช้ SequelPro เพื่อเพิ่มข้อ จำกัด และทำให้คีย์หลักเป็นแบบไม่ลงนามโดยค่าเริ่มต้น


2

ตรวจสอบการลงนามในคอลัมน์ตารางทั้งสองของคุณ หากคอลัมน์ตารางการอ้างอิงถูกเซ็นชื่อคอลัมน์ตารางที่อ้างอิงควรถูกลงชื่อด้วยเช่นกัน


1

หมายเหตุ: ตารางต่อไปนี้ถูกนำมาจากบางเว็บไซต์เมื่อฉันทำ R & D บางอย่างบนฐานข้อมูล ดังนั้นรูปแบบการตั้งชื่อจึงไม่เหมาะสม

สำหรับฉันปัญหาคือตารางผู้ปกครองของฉันมีชุดอักขระที่แตกต่างจากชุดที่ฉันสร้าง

ตารางหลัก (ผลิตภัณฑ์)

products | CREATE TABLE `products` (
  `productCode` varchar(15) NOT NULL,
  `productName` varchar(70) NOT NULL,
  `productLine` varchar(50) NOT NULL,
  `productScale` varchar(10) NOT NULL,
  `productVendor` varchar(50) NOT NULL,
  `productDescription` text NOT NULL,
  `quantityInStock` smallint(6) NOT NULL,
  `buyPrice` decimal(10,2) NOT NULL,
  `msrp` decimal(10,2) NOT NULL,
  PRIMARY KEY (`productCode`),
  KEY `productLine` (`productLine`),
  CONSTRAINT `products_ibfk_1` FOREIGN KEY (`productLine`) REFERENCES `productlines` (`productLine`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

ตารางลูกที่มีปัญหา (PRICE_LOGS)

price_logs | CREATE TABLE `price_logs` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `productCode` varchar(15) DEFAULT NULL,
  `old_price` decimal(20,2) NOT NULL,
  `new_price` decimal(20,2) NOT NULL,
  `added_on` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `productCode` (`productCode`),
  CONSTRAINT `price_logs_ibfk_1` FOREIGN KEY (`productCode`) REFERENCES `products` (`productCode`) ON DELETE CASCADE ON UPDATE CASCADE
);

ดัดแปลงเป็น

price_logs | CREATE TABLE `price_logs` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `productCode` varchar(15) DEFAULT NULL,
  `old_price` decimal(20,2) NOT NULL,
  `new_price` decimal(20,2) NOT NULL,
  `added_on` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `productCode` (`productCode`),
  CONSTRAINT `price_logs_ibfk_1` FOREIGN KEY (`productCode`) REFERENCES `products` (`productCode`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1 


0

ฉันมีข้อผิดพลาดคล้ายกันในการสร้าง foreign key ในตาราง Many to Many โดยที่คีย์หลักประกอบด้วย 2 foreign key และอีกคอลัมน์ปกติ ฉันแก้ไขปัญหาโดยแก้ไขชื่อตารางที่อ้างอิงเช่น บริษัท ดังที่แสดงในรหัสที่แก้ไขด้านล่าง:

create table company_life_cycle__history -- (M-M)
(
company_life_cycle_id tinyint unsigned not null,
Foreign Key (company_life_cycle_id) references company_life_cycle(id) ON DELETE    CASCADE ON UPDATE CASCADE,
company_id MEDIUMINT unsigned not null,
Foreign Key (company_id) references company(id) ON DELETE CASCADE ON UPDATE CASCADE,
activity_on date NOT NULL,
PRIMARY KEY pk_company_life_cycle_history (company_life_cycle_id, company_id,activity_on),
created_on datetime DEFAULT NULL,
updated_on datetime DEFAULT NULL,
created_by varchar(50) DEFAULT NULL,
updated_by varchar(50) DEFAULT NULL
);

0

ฉันมีข้อผิดพลาดที่คล้ายกันกับสองคีย์ต่างประเทศสำหรับตารางที่แตกต่างกัน แต่มีชื่อคีย์เดียวกัน! ฉันเปลี่ยนชื่อคีย์และข้อผิดพลาดได้หายไป)


0

มีข้อผิดพลาดที่คล้ายกัน แต่ในกรณีของฉันฉันหายไปเพื่อประกาศ pk เป็น auto_increment

ในกรณีที่มันจะเป็นประโยชน์กับทุกคน


0

ฉันได้รับข้อผิดพลาดเดียวกัน สาเหตุในกรณีของฉันคือ:

  1. ฉันสร้างสำเนาสำรองของฐานข้อมูลผ่าน phpmyadmin โดยคัดลอกฐานข้อมูลทั้งหมด
  2. ฉันสร้าง db ใหม่ด้วยชื่อเดียวกับที่ db เก่าไม่ได้เลือกไว้
  3. ฉันเริ่มสคริปต์ SQL เพื่อสร้างตารางและข้อมูลที่อัปเดต
  4. ฉันได้รับข้อผิดพลาด นอกจากนี้เมื่อฉันปิดใช้งาน foreign_key_checks ค่อนข้างฐานข้อมูลว่างเปล่าอย่างสมบูรณ์

สาเหตุคือ: เนื่องจากฉันใช้ phpmyadmin เพื่อสร้างกุญแจต่างประเทศบางส่วนในฐานข้อมูลที่ถูกเปลี่ยนชื่อ - กุญแจต่างประเทศที่สร้างขึ้นด้วยคำนำหน้าชื่อฐานข้อมูล แต่คำนำหน้าชื่อฐานข้อมูลไม่ได้รับการปรับปรุง ดังนั้นยังมีการอ้างอิงใน backup-db ที่ชี้ไปยัง db ที่สร้างขึ้นใหม่


0

วิธีแก้ปัญหาของฉันอาจเป็นเรื่องน่าอายเล็กน้อยและบอกเล่าเรื่องราวว่าทำไมบางครั้งคุณควรมองสิ่งที่คุณมีต่อหน้าแทนที่จะเป็นข้อความเหล่านี้ :)

ฉันเคยเป็นวิศวกรไปข้างหน้ามาก่อนซึ่งล้มเหลวนั่นหมายความว่าฐานข้อมูลของฉันมีตารางอยู่สองสามตารางจากนั้นฉันพยายามนั่งเพื่อแก้ไขข้อผิดพลาดที่สำคัญต่างประเทศที่พยายามทำให้แน่ใจว่าทุกอย่างสมบูรณ์แบบ ตารางที่สร้างไว้ก่อนหน้านี้ดังนั้นจึงไม่เหนือกว่า


0

สาเหตุหนึ่งที่เพิ่มขึ้นของข้อผิดพลาดนี้คือเมื่อตารางหรือคอลัมน์ของคุณมีที่สงวนคำหลัก :

บางครั้งก็ลืมสิ่งเหล่านี้


0

ในกรณีของฉันมีข้อผิดพลาดทางไวยากรณ์ซึ่งไม่ได้รับการแจ้งเตือนอย่างชัดเจนจากคอนโซล MySQL เมื่อเรียกใช้แบบสอบถาม อย่างไรก็ตามส่วนSHOW ENGINE INNODB STATUSของคำสั่งLATEST FOREIGN KEY ERRORรายงาน

  Syntax error close to:

  REFERENCES`role`(`id`) ON DELETE CASCADE) ENGINE = InnoDB DEFAULT CHARSET = utf8

ฉันต้องเว้นช่องว่างระหว่างREFERENCESและroleเพื่อให้มันทำงาน


0

สำหรับฉันมันเป็น - คุณไม่สามารถละเว้น prefixing ตารางฐานข้อมูลปัจจุบันถ้าคุณสร้าง FK สำหรับฐานข้อมูลที่ไม่หมุนเวียนอ้างอิงฐานข้อมูลปัจจุบัน:

USE currrent_db;
ALTER TABLE other_db.tasks ADD CONSTRAINT tasks_fk FOREIGN KEY (user_id) REFERENCES currrent_db.users (id);

ถ้าฉันไม่ใช้ "currrent_db" สำหรับตารางผู้ใช้ฉันได้รับข้อผิดพลาด FK ที่น่าสนใจที่แสดงให้เห็นสถานะของเครื่องยนต์ INNODB ไม่แสดงสิ่งใดในกรณีนี้


-1

ฉันมีปัญหาเดียวกันนี้จากนั้นฉันแก้ไขชื่อ Engine เป็น Innodb ทั้งในตารางหลักและตารางรองและแก้ไขชื่อเขตข้อมูลอ้างอิง FOREIGN KEY ( c_id) REFERENCES x9o_parent_table( c_id) อ้างอิง
จากนั้นทำงานได้ดีและติดตั้งตารางอย่างถูกต้อง สิ่งนี้จะถูกใช้อย่างเต็มรูปแบบสำหรับใครบางคน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.