错误 1452 (23000)
ERROR 1452 (23000)
我的脚本出现这个错误:
ERROR 1452 (23000): Cannot add or update a child row: a foreign key
constraint fails (hbm248_BucherFilms1
.films
, CONSTRAINT
films_ibfk_1
FOREIGN KEY (country
) REFERENCES countries
(country
))
我想使用 INNODB,但不明白导致该错误的原因。我所有的外键都排成一行。什么是 films_ibfk_1?
这是脚本。
谢谢!
-- create the countries table
DROP TABLE IF EXISTS countries;
CREATE TABLE countries (
country varchar (50) NOT NULL,
PRIMARY KEY(country))
ENGINE = INNODB;
LOAD DATA LOCAL INFILE "Countries.csv"
INTO TABLE countries
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
-- create the film_stock table
DROP TABLE IF EXISTS film_stock;
CREATE TABLE film_stock (
stock varchar (10) NOT NULL,
PRIMARY KEY(stock))
ENGINE = INNODB;
LOAD DATA LOCAL INFILE "FilmStock.csv"
INTO TABLE film_stock
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
-- create the film_gauge table
DROP TABLE IF EXISTS film_gauge;
CREATE TABLE film_gauge (
gauge varchar (10) NOT NULL,
PRIMARY KEY(gauge))
ENGINE = INNODB;
LOAD DATA LOCAL INFILE "FilmGauge.csv"
INTO TABLE film_gauge
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
-- create the bw_or_color table
DROP TABLE IF EXISTS bw_or_color;
CREATE TABLE bw_or_color (
bw_color varchar (10) NOT NULL,
PRIMARY KEY(bw_color))
ENGINE = INNODB;
LOAD DATA LOCAL INFILE "BW_color.csv"
INTO TABLE bw_or_color
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
-- create the crew_roles table
DROP TABLE IF EXISTS roles;
CREATE TABLE crew_roles (
roles varchar (15) NOT NULL,
PRIMARY KEY(roles))
ENGINE = INNODB;
LOAD DATA LOCAL INFILE "Roles.csv"
INTO TABLE crew_roles
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
-- create the people table
DROP TABLE IF EXISTS people;
CREATE TABLE people (
full_name varchar (50) NOT NULL,
people_ID varchar (15) NOT NULL,
date_of_birth DATE,
date_of_death DATE,
PRIMARY KEY(people_ID))
ENGINE = INNODB;
LOAD DATA LOCAL INFILE "People.csv"
INTO TABLE people
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
-- create the cast_members table
DROP TABLE IF EXISTS cast_members;
CREATE TABLE cast_members (
cast_ID int AUTO_INCREMENT,
title varchar (50) NOT NULL,
full_name varchar (50) NOT NULL,
roles varchar (15) NOT NULL,
PRIMARY KEY(cast_ID),
FOREIGN KEY(title) REFERENCES films (title),
FOREIGN KEY(full_name) REFERENCES people (full_name),
FOREIGN KEY(roles) REFERENCES crew_roles (roles))
ENGINE = INNODB;
LOAD DATA LOCAL INFILE "CastMembers.csv"
INTO TABLE cast_members
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
-- create the films table
DROP TABLE IF EXISTS films;
CREATE TABLE films (
title varchar (100) NOT NULL,
alternate_title varchar (50) NULL,
year_of_release varchar (15) NULL,
country varchar (50) NULL,
running_time_minutes int (10) NULL,
footage_lenght_feet int (10) NULL,
stock varchar (10) NULL,
gauge varchar (10) NULL,
bw_color varchar (10) NULL,
notes varchar (255) NULL,
print_publications varchar (255) NULL,
existent_print varchar (255) NULL,
url_1 varchar (100) NULL,
url_2 varchar (100) NULL,
url_3 varchar (100) NULL,
PRIMARY KEY(title),
FOREIGN KEY(country) REFERENCES countries (country),
FOREIGN KEY(stock) REFERENCES film_stock (stock),
FOREIGN KEY(bw_color) REFERENCES bw_or_color (bw_color),
FOREIGN KEY(gauge) REFERENCES film_gauge (gauge))
ENGINE = INNODB;
LOAD DATA LOCAL INFILE "Films.csv"
INTO TABLE films
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
非常感谢任何帮助!
"ENGINE = INNODB" 不是 create table 语句的一部分。删除这两个 table 的第一个分号。
CREATE TABLE cast_members (
cast_ID int AUTO_INCREMENT,
title varchar (50) NOT NULL,
full_name varchar (50) NOT NULL,
roles varchar (15) NOT NULL,
PRIMARY KEY(cast_ID),
FOREIGN KEY(title) REFERENCES films (title),
FOREIGN KEY(full_name) REFERENCES people (full_name),
FOREIGN KEY(roles) REFERENCES roles (roles)); <-- this one
ENGINE = INNODB;
计划 A:按正确的顺序加载 table。 (在需要 country
的任何 table 之前加载 Countries
。等等)
B 计划:DISABLE KEYS ... 加载 ...ENABLE KEYS
我的脚本出现这个错误:
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (
hbm248_BucherFilms1
.films
, CONSTRAINTfilms_ibfk_1
FOREIGN KEY (country
) REFERENCEScountries
(country
))
我想使用 INNODB,但不明白导致该错误的原因。我所有的外键都排成一行。什么是 films_ibfk_1?
这是脚本。
谢谢!
-- create the countries table
DROP TABLE IF EXISTS countries;
CREATE TABLE countries (
country varchar (50) NOT NULL,
PRIMARY KEY(country))
ENGINE = INNODB;
LOAD DATA LOCAL INFILE "Countries.csv"
INTO TABLE countries
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
-- create the film_stock table
DROP TABLE IF EXISTS film_stock;
CREATE TABLE film_stock (
stock varchar (10) NOT NULL,
PRIMARY KEY(stock))
ENGINE = INNODB;
LOAD DATA LOCAL INFILE "FilmStock.csv"
INTO TABLE film_stock
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
-- create the film_gauge table
DROP TABLE IF EXISTS film_gauge;
CREATE TABLE film_gauge (
gauge varchar (10) NOT NULL,
PRIMARY KEY(gauge))
ENGINE = INNODB;
LOAD DATA LOCAL INFILE "FilmGauge.csv"
INTO TABLE film_gauge
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
-- create the bw_or_color table
DROP TABLE IF EXISTS bw_or_color;
CREATE TABLE bw_or_color (
bw_color varchar (10) NOT NULL,
PRIMARY KEY(bw_color))
ENGINE = INNODB;
LOAD DATA LOCAL INFILE "BW_color.csv"
INTO TABLE bw_or_color
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
-- create the crew_roles table
DROP TABLE IF EXISTS roles;
CREATE TABLE crew_roles (
roles varchar (15) NOT NULL,
PRIMARY KEY(roles))
ENGINE = INNODB;
LOAD DATA LOCAL INFILE "Roles.csv"
INTO TABLE crew_roles
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
-- create the people table
DROP TABLE IF EXISTS people;
CREATE TABLE people (
full_name varchar (50) NOT NULL,
people_ID varchar (15) NOT NULL,
date_of_birth DATE,
date_of_death DATE,
PRIMARY KEY(people_ID))
ENGINE = INNODB;
LOAD DATA LOCAL INFILE "People.csv"
INTO TABLE people
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
-- create the cast_members table
DROP TABLE IF EXISTS cast_members;
CREATE TABLE cast_members (
cast_ID int AUTO_INCREMENT,
title varchar (50) NOT NULL,
full_name varchar (50) NOT NULL,
roles varchar (15) NOT NULL,
PRIMARY KEY(cast_ID),
FOREIGN KEY(title) REFERENCES films (title),
FOREIGN KEY(full_name) REFERENCES people (full_name),
FOREIGN KEY(roles) REFERENCES crew_roles (roles))
ENGINE = INNODB;
LOAD DATA LOCAL INFILE "CastMembers.csv"
INTO TABLE cast_members
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
-- create the films table
DROP TABLE IF EXISTS films;
CREATE TABLE films (
title varchar (100) NOT NULL,
alternate_title varchar (50) NULL,
year_of_release varchar (15) NULL,
country varchar (50) NULL,
running_time_minutes int (10) NULL,
footage_lenght_feet int (10) NULL,
stock varchar (10) NULL,
gauge varchar (10) NULL,
bw_color varchar (10) NULL,
notes varchar (255) NULL,
print_publications varchar (255) NULL,
existent_print varchar (255) NULL,
url_1 varchar (100) NULL,
url_2 varchar (100) NULL,
url_3 varchar (100) NULL,
PRIMARY KEY(title),
FOREIGN KEY(country) REFERENCES countries (country),
FOREIGN KEY(stock) REFERENCES film_stock (stock),
FOREIGN KEY(bw_color) REFERENCES bw_or_color (bw_color),
FOREIGN KEY(gauge) REFERENCES film_gauge (gauge))
ENGINE = INNODB;
LOAD DATA LOCAL INFILE "Films.csv"
INTO TABLE films
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
非常感谢任何帮助!
"ENGINE = INNODB" 不是 create table 语句的一部分。删除这两个 table 的第一个分号。
CREATE TABLE cast_members (
cast_ID int AUTO_INCREMENT,
title varchar (50) NOT NULL,
full_name varchar (50) NOT NULL,
roles varchar (15) NOT NULL,
PRIMARY KEY(cast_ID),
FOREIGN KEY(title) REFERENCES films (title),
FOREIGN KEY(full_name) REFERENCES people (full_name),
FOREIGN KEY(roles) REFERENCES roles (roles)); <-- this one
ENGINE = INNODB;
计划 A:按正确的顺序加载 table。 (在需要 country
的任何 table 之前加载 Countries
。等等)
B 计划:DISABLE KEYS ... 加载 ...ENABLE KEYS