【发布时间】:2017-11-19 00:07:20
【问题描述】:
我有一个运行良好的注册表单,但由于某种原因它没有添加到数据库中。所以我在 phpmyadmin 中测试了这个查询,我发现了这个错误
查询:
INSERT INTO `EMTS`(`name`, `nickname`, `age`, `number`, `city`, `password`, `street`, `building`)
VALUES ("Alice","Aa","21","414514151","New York","111","main","x")
我没有故意填写其他列。在其他数据库中这不会导致任何问题
错误:
#1452 - 无法添加或更新子行:外键约束失败 (
mydb.emts, CONSTRAINTfk_EMTS_shifts1FOREIGN KEY (shifts_idshifts) REFERENCESshifts(idshifts) ON DELETE更新时不采取行动不采取行动)
这是 emts 表:
CREATE TABLE IF NOT EXISTS mydb.EMTS(
idEMTS INT NOT NULL AUTO_INCREMENT,
name VARCHAR(45) NOT NULL,
nickname VARCHAR(45) NOT NULL,
age VARCHAR(45) NOT NULL,
number VARCHAR(45) NOT NULL,
email VARCHAR(45) NOT NULL,
city VARCHAR(255) NOT NULL,
password VARCHAR(45) NOT NULL,
shifts_idshifts INT(45) NOT NULL,
bloodtype_id INT NOT NULL,
street VARCHAR(45) NOT NULL,
building VARCHAR(45) NOT NULL,
PRIMARY KEY (idEMTS),
INDEX fk_EMTS_shifts1_idx(shifts_idshifts ASC),
INDEX fk_EMTS_bloodtype1_idx(bloodtype_id ASC),
UNIQUE INDEX nickname_UNIQUE(nickname ASC),
CONSTRAINT fk_EMTS_shifts1
FOREIGN KEY (shifts_idshifts)
REFERENCES mydb.shifts(idshifts)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT fk_EMTS_bloodtype1
FOREIGN KEY (bloodtype_id)
REFERENCES mydb.bloodtype(id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
这是血型表:
CREATE TABLE IF NOT EXISTS mydb.bloodtype(
type INT NOT NULL,
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (id))
ENGINE = InnoDB;
这是班次表:
CREATE TABLE IF NOT EXISTS mydb.shifts(
startdate INT NOT NULL,
enddate VARCHAR(45) NOT NULL,
day VARCHAR(45) NOT NULL,
idshifts INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (idshifts))
ENGINE = InnoDB;
我不明白怎么了?
【问题讨论】:
-
你的答案就在那里,需要填写
shifts_idshifts而你没有填写。 -
这是 SQL Server 还是 MySQL?