最近在使用 MySQL 进行数据导出和导入时,经常会遇到外键约束导致的错误。尝试导入数据时,可能会遇到以下错误:
ERROR 1452 (23000) at line 1: Cannot add or update a child row: a foreign key constraint fails (`cheer`.`course`, CONSTRAINT `Course_subjectId_fkey` FOREIGN KEY (`subjectId`) REFERENCES `subject` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)
错误表明,在导入 course 表的数据时,subjectId 的值在 subject 表中不存在,从而触发了外键约束错误。
而我折腾很久,才发现默认情况下是不会产生这样的问题的,根本原因是导出数据时使用了 --compact 这个参数。
本文将过一个具体的例子,探讨使用 --compact 导出数据将导致数据导入时产生的外键约束错误等一系列问题。
课程和开课表的案例引入
假设我们有以下两个表:课程subject 和 开课course。
subject 表
sqlCREATE TABLE `subject` (`id` INT AUTO_INCREMENT PRIMARY KEY,`name` VARCHAR(255) NOT NULL);
course 表
sqlCREATE TABLE `course` (
