mysql - 错误 1452 MySQL Load Infile(但正确的数据)

标签 mysql foreign-keys mysql-workbench mysql-error-1452

我正在尝试使用 LOAD DATA INFILE 从 .txt 加载数据,问题是我收到错误 1452,但引用的外键存在于我的数据库中。其他 LOAD DATA 也在工作,只是无法解决这个和其他 1 个负载。

我已经检查了引用的数据,并且在我加载之前存在于数据库中。列也是相同类型的。我尝试重新安装 MySQL 仍然无法正常工作(但我的一个 friend 使用相同的代码/.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

我的一个 friend 重新安装了 MySQL 并使用完全相同的脚本/.txt 可以加载文件,但我仍然不能。

错误代码:1452。无法添加或更新子行:外键约束失败(音乐sottocategoria_di,CONSTRAINT sottocategoria_di_ibfk_2 FOREIGN KEY (Categoria2) REFERENCES categoria (Nome) ON DELETE CASCADE)

最佳答案

问题是使用以 '\n' 结尾的行,切换到 '\r\n' 并且它起作用了!仍然不知道为什么它适用于我正在使用的其他文件 .txt(相同的操作系统 Windows)

关于mysql - 错误 1452 MySQL Load Infile(但正确的数据),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57087910/

相关文章:

mysql - mysql 中有多个条件的情况

mysql - 撤消 CTE(公用表表达式)

mysql - 插入列正确的数据时,MySQL 中出现错误 1136

MySQL:在带有 INNER JOIN 的 Where 子句中面临问题

php - 通过激活链接验证电子邮件帐户

mysql - 如何将外键添加到两个 Innodb 表,以便它们自动相互更新?

entity-framework - EF6 : Composite Primary Key Field as Foreign Key (ALTER TABLE statement conflicted with the FOREIGN KEY constraint)

c# - 如何使用 Linq-to-SQL 删除具有空外键的行?

mysql - MySQL 数据库中的行到列。

MYSQL Performance Tuning with group by 子句