目录
问题来源
解决办法
初学MySQL,创建三个表department、employee以及project,其中问题主要出现在employee表中,该表定义如下:
CREATE TABLE employee
(
id INT(10) PRIMARY KEY,
name CHAR(20),
age INT(10),
salary INT(10) NOT NULL,
phone INT(12) NOT NULL,
in_dpt CHAR(20) NOT NULL,
UNIQUE (phone),
CONSTRAINT emp_fk FOREIGN KEY (in_dpt) REFERENCES department(dpt_name)
);
表中现有数据如下:
现在我想通过load data从文件中导入数据到employee表中,数据源(文件名为“123”)、导入报错情况如下:
报错信息表明这是一个外键约束错误,并指明了错误发生的位置应当在数据源的dpt2处,也就是说,引起错误的可能原因是外键所引用的源表中并没有’dpt2‘,考虑到这种情况,我再次检查employee中in_dpt字段所绑定的外键原表department中的dpt_name字段,如下:
结果显示,department表中的dpt_name字段中是存在'dpt2'的,因此按道理来说不存在外键约束错误的情况,但是却报出了外键约束错误,这就说明数据库读入时读入的肯定不是dpt2,而我在数据源中是以空格为分隔符进行字段区分的,因此有可能是因为load data导入时不是以空格符为分隔符的。然后我将空格符换为了制表符,即Tab,用Tab来分割各个字段,就成功的解决了问题。
因此,在使用load data导入数据文件时,数据文件中字段数据间应该以Tab制表符为分隔符,而不应当用空格符。