load data infile 导入数据 InnoDB 外键约束

用户表:user
主键:id

内容表:post
主键:id
外键:user_id(关联到 user 表的主键 id)

post 表的数据文件存在文本文件中,字段之间用 tab 分隔,当要把文件导入到 post 表时,因 user 和 post 都是 InnoDB 引擎的,有外键约束,运行导入语句:

load data infile '/home/leakon/post.sql' ignore into table post ignore 1 lines ( user_id, title, unixtime );

MySQL 报错,信息如下:

Cannot add or update a child row: a foreign key constraint fails (leakon/post, CONSTRAINT post_FK_1 FOREIGN KEY (user_id) REFERENCES user (id))

反复尝试,总是失败,后来查了一下解决办法,只要在装载数据之前,插入下述语句,即可暂时关闭外键约束检查:

SET FOREIGN_KEY_CHECKS = 0;

然后再次运行 load data infile 语句,即可立即导入数据。