2014-07-18 81 views
-1

我不知道我做错了什么。 MySQL并不是我的东西,所以我想我应该在这里寻求帮助。MYSQL错误1452:外键

LOAD DATA LOCAL INFILE "D:/Database/FMA/walkdb_dataprogProgrammeCREATE TABLE  `Programme` (
`programme_id` int(11) NOT NULL AUTO_INCREMENT, 
`walk_id` int(11) NOT NULL, 
`programme_date` text NOT NULL, 
`programme_starttime` date NOT NULL, 
`programme_maxpart` int(3) NOT NULL, 
PRIMARY KEY (`programme_id`), 
KEY `walkprog_id_idx` (`walk_id`), 
CONSTRAINT `walkprog_id` FOREIGN KEY (`walk_id`) REFERENCES `Walk` (`walk_id`) 
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1; 
.csv" 
INTO TABLE Programme 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\r\n' 

您需要更多的细节?

+1

你的'CREATE TABLE'语句应该在别处执行。如果你想要加载数据的表不存在,你必须在[LOAD DATA INFILE]之前创建这个表(http://dev.mysql.com/doc/refman/5.6/en/load- data.html)语句。 – VMai

+0

@VMai我建议你发表你的评论作为答案。 – Barranka

+0

@Barranka所以我做了。这对我来说太明显了。 – VMai

回答

2

您已将CREATE TABLE声明混合到LOAD DATA INFILE声明中。如果要合并这两个表格,则必须先创建表格,因为LOAD DATA INFILE只能导入到现有表格中。

我认为它应该是:遵循

CREATE TABLE `Programme` (
    `programme_id` int(11) NOT NULL AUTO_INCREMENT, 
    `walk_id` int(11) NOT NULL, 
    `programme_date` text NOT NULL, 
    `programme_starttime` date NOT NULL, 
    `programme_maxpart` int(3) NOT NULL, 
    PRIMARY KEY (`programme_id`), 
    KEY `walkprog_id_idx` (`walk_id`), 
    CONSTRAINT `walkprog_id` FOREIGN KEY (`walk_id`) REFERENCES `Walk` (`walk_id`) 
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1; 

通过

LOAD DATA LOCAL INFILE "D:/Database/FMA/walkdb_dataprogProgramme.csv" 
INTO TABLE Programme 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\r\n' 

也许你会考虑

要加载操作期间忽略外键约束,发出 SET执行LOAD DATA之前,foreign_key_checks = 0语句。

你的外键约束walk_id