【问题标题】:MYSQL Error 1452: Foreign KeyMYSQL 错误 1452:外键
【发布时间】:2014-09-10 04:00:02
【问题描述】:

我不确定我做错了什么。 MySQL 不是我的菜,所以我想我应该在这里寻求帮助。

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' 

您需要更多详细信息吗?

【问题讨论】:

  • 您的CREATE TABLE 语句应该在别处执行。如果要加载数据的表不存在,则必须在 LOAD DATA INFILE 语句之前创建此表。
  • @VMai 我建议您发表您的评论作为答案。
  • @Barranka 所以我已经完成了。这对我来说太明显了。

标签: mysql mysql-error-1452


【解决方案1】:

您已将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'

也许你会考虑

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

对于walk_id 的外键约束。

【讨论】:

    猜你喜欢
    • 2013-11-15
    • 1970-01-01
    • 2018-02-15
    • 2014-04-08
    • 2013-12-03
    • 2013-11-17
    • 2012-01-08
    • 2014-12-16
    • 1970-01-01
    相关资源
    最近更新 更多