【发布时间】:2019-11-26 23:59:09
【问题描述】:
我正在尝试使用 LOAD DATA INFILE 从 .txt 加载数据,问题是我收到错误 1452,但引用的外键存在于我的数据库中。其他负载数据也在工作,只是无法解决这个问题和其他 1 个负载。
我已经检查了引用的数据,并且在我加载之前存在于数据库中。列也属于同一类型。我尝试重新安装 MySQL 仍然无法正常工作(但我的一个朋友使用相同的代码/.txt 可以加载数据)。如果 .txt 由单行组成,我可以加载它,但是在添加第二行时出现错误。
-- The table referred:
CREATE TABLE Categoria (
Nome VARCHAR(50) NOT NULL,
Immagine MEDIUMBLOB,
PRIMARY KEY (Nome));
-- The table with FK:
CREATE TABLE Sottocategoria_Di (
Categoria1 VARCHAR(50) NOT NULL,
Categoria2 VARCHAR(50) NOT NULL,
PRIMARY KEY (Categoria1, Categoria2),
FOREIGN KEY (Categoria1) REFERENCES Categoria(Nome) ON DELETE NO ACTION,
FOREIGN KEY (Categoria2) REFERENCES Categoria(Nome) ON DELETE CASCADE);
INSERT INTO Categoria VALUES ('Chitarra', NULL);
INSERT INTO Categoria VALUES ('Chitarra Acustica', NULL);
INSERT INTO Categoria VALUES ('Chitarra Classica', NULL);
LOAD DATA INFILE "C:/ProgramData/MySQL/MySQL Server
8.0/Uploads/MusicShop/Sottocategoria.txt" INTO TABLE
Music.Sottocategoria_Di
CHARACTER SET latin1
FIELDS TERMINATED BY '|'
ENCLOSED BY ''
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(Categoria1,Categoria2);
-- Sottocategoria.txt
Categoria1,Categoria2
Chitarra Classica|Chitarra
Chitarra Acustica|Chitarra
我的一个朋友重新安装了 MySQL 并使用相同的脚本/.txt 可以加载文件,但我仍然不能。
错误代码:1452。无法添加或更新子行:外键约束失败 (music.sottocategoria_di, CONSTRAINT sottocategoria_di_ibfk_2 FOREIGN KEY (Categoria2) REFERENCES categoria (Nome)删除级联)
【问题讨论】:
-
第二行末尾是反引号吗?
-
是的,错误点击复制它,但在我的 .txt 中不存在。
-
要检查的 2 件事 1) 您在数据中提供了 categoria2,但它们在 categoria 中设置为 null 2) 您可能需要将以 LINES TERMINATED BY '\r\n'
-
感谢您的帮助!那行得通!问题是使用 '\n',切换到 '\r\n' 并且成功了!仍然不知道为什么它适用于我正在使用的其他文件 .txt(仍在 Windows 上)
-
请不要将已解决的问题编辑为标题或将解决方案编辑为问题。发布您的答案作为答案。最短时间后,您可以接受它。
标签: mysql foreign-keys mysql-workbench mysql-error-1452