登録フォームが完全に機能していますが、何らかの理由でデータベースに追加されませんでした。だから私は、phpMyAdminの中でこのクエリをテストし、私はこのエラーMYSQL ERROR 1452強制キー制約が失敗する
クエリが見つかりました:
INSERT INTO `EMTS`(`name`, `nickname`, `age`, `number`, `city`, `password`, `street`, `building`)
VALUES ("Alice","Aa","21","414514151","New York","111","main","x")
を、私は意図的に他の列を埋めていませんでした。他のデータベースでは、これは何の問題も
エラーを起こさない:
#1452 - Cannot add or update a child row: a foreign key constraint fails (
mydb
.emts
, CONSTRAINTfk_EMTS_shifts1
FOREIGN KEY (shifts_idshifts
) REFERENCESshifts
(idshifts
) ON DELETE NO ACTION ON UPDATE NO ACTION)
これは、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;
これはbloodtypeテーブルです:
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' '必要があり、あなたはそれを記入していなかった – Forbs
は、このSQL ServerまたはMySQLのです:あなたはまた、strictモードを自分で設定することができますか? – Sami