簡體   English   中英

錯誤代碼 1452 mysql 出現在 windows 但不在 linux

[英]ERROR code 1452 mysql occurs in windows but not in linux

我有一個 django 項目,它在 manage.py 遷移后創建表。 我對兩者都使用了一些 LOAD DATA LOCAL INFILE MySQL 查詢。 我有 7 張桌子。 所有前 6 個表在 Linux 和 Windows 中的填充方式相同。 除了最后一個表在以前的表中有一些外鍵。

Linux MySQL 輸出

Windows MySQL 輸出

Windows 和 Linux 表都在 InnoDB 中,並且父表具有完全相同的數據。

Linux中的表信息

Windows 中的表信息

Linux 中的節表鍵

Windows 中的部分表鍵

INSERT INTO `seas_database`.`section_t`
(`eSession`,`eDays`,`dYear`,`nSectionNumber`,`nSectionCapacity`,`nEnrolled`,`bIsBlocked`,`tStartTime`,`tEndTime`,`cCoffCode_ID`,`cFaculty_ID`,`cRoom_ID`)
VALUES
("Spring","F",2009,1,250,43,0,"14:00","15:30","AAT101","T001","C10210-S");

證明 AAT101 存在於 Windows

然而我只在 Windows 中得到這個錯誤。 不在 Linux 中。

Error Code: 1452. 
Cannot add or update a child row: 
a foreign key constraint fails 
(`seas_database`.`section_t`, CONSTRAINT `section_t_cCoffCode_ID_ade53504_fk_cooffered` FOREIGN KEY (`cCoffCode_ID`) 
REFERENCES `coofferedcourse_t` (`cCoffCode_ID`))

Linux MySQL版本:

mysql  Ver 8.0.27 for Linux on x86_64 (MySQL Community Server - GPL)

Windows MySQL 版本:

C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe  Ver 8.0.27 for Win64 on x86_64 (MySQL Community Server - GPL)

如果有幫助,運行 LOAD DATA INFILE 的 csv 由 Pandas 從 xlsx 文件修改和創建。

編輯 1:顯示 django sqlmigrate

WINDOWS:

$ python manage.py sqlmigrate database 0001
--
-- Create model ClassroomT
--
CREATE TABLE `classroom_t` (`cRoom_ID` char(10) NOT NULL PRIMARY KEY, `nRoomCapacity` integer NULL);
--
-- Create model FacultyT
--
CREATE TABLE `faculty_t` (`cFaculty_ID` char(4) NOT NULL PRIMARY KEY, `cFacultyName` varchar(50) NULL);
--
-- Create model SchoolT
--
CREATE TABLE `school_t` (`cSchool_ID` char(5) NOT NULL PRIMARY KEY, `cSchoolName` varchar(50) NULL);
--
-- Create model DepartmentT
--
CREATE TABLE `department_t` (`cDepartment_ID` char(5) NOT NULL PRIMARY KEY, `cDepartmentName` varchar(50) NULL, `cSchool_ID` char(5) NULL);
--
-- Create model CourseT
--
CREATE TABLE `course_t` (`cCourse_ID` char(7) NOT NULL PRIMARY KEY, `cCourseName` varchar(50) NULL, `nCreditHours` integer NULL, `cDepartment_ID` char(5) NULL);
--
-- Create model CoofferedcourseT
--
CREATE TABLE `coofferedcourse_t` (`cCoffCode_ID` char(7) NOT NULL PRIMARY KEY, `cCourse_ID` char(7) NULL);
--
-- Create model SectionT
--
CREATE TABLE `section_t` (`section_ID` bigint AUTO_INCREMENT NOT NULL PRIMARY KEY, `eSession` enum('Autumn','Summer','Spring') NOT NULL, `eDays` enum('ST','MW','S','M','T','W','R','F','A','AR','TR','MWA','STR','AMW','SMW') NULL, `dYear` YEAR NOT NULL, `nSectionNumber` integer NULL, `nSectionCapacity` integer NULL, `nEnrolled` integer NULL, `bIsBlocked` bool NULL, `tStartTime` time(4) NULL, `tEndTime` time(4) NULL, `cCoffCode_ID` char(7) NULL, `cFaculty_ID` char(4) NULL, `cRoom_ID` char(10) NULL);
ALTER TABLE `department_t` ADD CONSTRAINT `department_t_cSchool_ID_78712ba9_fk_school_t_cSchool_ID` FOREIGN KEY (`cSchool_ID`) REFERENCES `school_t` (`cSchool_ID`);
ALTER TABLE `course_t` ADD CONSTRAINT `course_t_cDepartment_ID_94a48932_fk_department_t_cDepartment_ID` FOREIGN KEY (`cDepartment_ID`) REFERENCES `department_t` (`cDepartment_ID`);
ALTER TABLE `coofferedcourse_t` ADD CONSTRAINT `coofferedcourse_t_cCourse_ID_1f19dea6_fk_course_t_cCourse_ID` FOREIGN KEY (`cCourse_ID`) REFERENCES `course_t` (`cCourse_ID`);
ALTER TABLE `section_t` ADD CONSTRAINT `section_t_cCoffCode_ID_eSession_dY_d3ab791b_uniq` UNIQUE (`cCoffCode_ID`, `eSession`, `dYear`, `nSectionNumber`);
ALTER TABLE `section_t` ADD CONSTRAINT `section_t_cCoffCode_ID_ade53504_fk_cooffered` FOREIGN KEY (`cCoffCode_ID`) REFERENCES `coofferedcourse_t` (`cCoffCode_ID`);
ALTER TABLE `section_t` ADD CONSTRAINT `section_t_cFaculty_ID_9d31b493_fk_faculty_t_cFaculty_ID` FOREIGN KEY (`cFaculty_ID`) REFERENCES `faculty_t` (`cFaculty_ID`);
ALTER TABLE `section_t` ADD CONSTRAINT `section_t_cRoom_ID_141dc37b_fk_classroom_t_cRoom_ID` FOREIGN KEY (`cRoom_ID`) REFERENCES `classroom_t` (`cRoom_ID`);

LINUX

-
-- Create model ClassroomT
--
CREATE TABLE `Classroom_T` (`cRoom_ID` char(10) NOT NULL PRIMARY KEY, `nRoomCapacity` integer NULL);
--
-- Create model FacultyT
--
CREATE TABLE `Faculty_T` (`cFaculty_ID` char(4) NOT NULL PRIMARY KEY, `cFacultyName` varchar(50) NULL);
--
-- Create model SchoolT
--
CREATE TABLE `School_T` (`cSchool_ID` char(5) NOT NULL PRIMARY KEY, `cSchoolName` varchar(50) NULL);
--
-- Create model DepartmentT
--
CREATE TABLE `Department_T` (`cDepartment_ID` char(5) NOT NULL PRIMARY KEY, `cDepartmentName` varchar(50) NULL, `cSchool_ID` char(5) NULL);
--
-- Create model CourseT
--
CREATE TABLE `Course_T` (`cCourse_ID` char(7) NOT NULL PRIMARY KEY, `cCourseName` varchar(50) NULL, `nCreditHours` integer NULL, `cDepartment_ID` char(5) NULL);
--
-- Create model CoofferedcourseT
--
CREATE TABLE `CoOfferedCourse_T` (`cCoffCode_ID` char(7) NOT NULL PRIMARY KEY, `cCourse_ID` char(7) NULL);
--
-- Create model SectionT
--
CREATE TABLE `Section_T` (`section_ID` bigint AUTO_INCREMENT NOT NULL PRIMARY KEY, `eSession` enum('Autumn','Summer','Spring') NOT NULL, `eDays` enum('ST','MW','S','M','T','W','R','F','A','AR','TR','MWA','STR','AMW','SMW') NULL, `dYear` YEAR NOT NULL, `nSectionNumber` integer NULL, `nSectionCapacity` integer NULL, `nEnrolled` integer NULL, `bIsBlocked` bool NULL, `tStartTime` time(4) NULL, `tEndTime` time(4) NULL, `cCoffCode_ID` char(7) NULL, `cFaculty_ID` char(4) NULL, `cRoom_ID` char(10) NULL);
ALTER TABLE `Department_T` ADD CONSTRAINT `Department_T_cSchool_ID_63ec4e50_fk_School_T_cSchool_ID` FOREIGN KEY (`cSchool_ID`) REFERENCES `School_T` (`cSchool_ID`);
ALTER TABLE `Course_T` ADD CONSTRAINT `Course_T_cDepartment_ID_db6f888e_fk_Department_T_cDepartment_ID` FOREIGN KEY (`cDepartment_ID`) REFERENCES `Department_T` (`cDepartment_ID`);
ALTER TABLE `CoOfferedCourse_T` ADD CONSTRAINT `CoOfferedCourse_T_cCourse_ID_978180ee_fk_Course_T_cCourse_ID` FOREIGN KEY (`cCourse_ID`) REFERENCES `Course_T` (`cCourse_ID`);
ALTER TABLE `Section_T` ADD CONSTRAINT `Section_T_cCoffCode_ID_eSession_dY_32461251_uniq` UNIQUE (`cCoffCode_ID`, `eSession`, `dYear`, `nSectionNumber`);
ALTER TABLE `Section_T` ADD CONSTRAINT `Section_T_cCoffCode_ID_a2585c57_fk_CoOffered` FOREIGN KEY (`cCoffCode_ID`) REFERENCES `CoOfferedCourse_T` (`cCoffCode_ID`);
ALTER TABLE `Section_T` ADD CONSTRAINT `Section_T_cFaculty_ID_a3346fb8_fk_Faculty_T_cFaculty_ID` FOREIGN KEY (`cFaculty_ID`) REFERENCES `Faculty_T` (`cFaculty_ID`);
ALTER TABLE `Section_T` ADD CONSTRAINT `Section_T_cRoom_ID_dd113d5d_fk_Classroom_T_cRoom_ID` FOREIGN KEY (`cRoom_ID`) REFERENCES `Classroom_T` (`cRoom_ID`);

事實證明,該解決方案確實是特定於平台的。 自動生成的 csv 文件中的行終止字符我正在從中加載數據,在 Windows 和 Linux 中有所不同。 因此,在 linux 中,我從未遇到過以下代碼的問題,

-- Populating CoOfferedCourse_T
LOAD DATA LOCAL
INFILE "path/to/foo.csv" 
INTO TABLE coofferedcourse_t 
FIELDS TERMINATED BY "\t"
IGNORE 1 LINES 
(@COFFER_COURSE_ID,@COFFERED_WITH)
SET cCoffCode_ID=@COFFERED_WITH,cCourse_ID=@COFFER_COURSE_ID;

在 windows 中,我必須添加

LINES TERMINATED BY '\r\n'

之后,兩個平台中的表格狀態變得相同

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM