Ik krijg de volgende error met PDO:

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`sma`.`episodes`, CONSTRAINT `episodes_ibfk_1` FOREIGN KEY (`show_id`) REFERENCES `shows` (`id`))


SQL:


CREATE TABLE IF NOT EXISTS shows (
	id					int unsigned				not null	AUTO_INCREMENT,
	tvdb_id				int unsigned,
	bd_id				int unsigned,
	name				varchar(200)				not null,
	date_added			datetime					not null,
	PRIMARY KEY(id),
	UNIQUE KEY(tvdb_id, bd_id)
) ENGINE=INNODB;

CREATE TABLE episodes (
	id 					bigint unsigned				not null 	AUTO_INCREMENT,
	show_id				int unsigned				not null,
	season				tinyint unsigned			not null,
	episode				tinyint unsigned			not null,
	date_added			datetime					not null,
	PRIMARY KEY(id),
	INDEX(show_id),
	FOREIGN KEY (show_id) REFERENCES shows (id) ON UPDATE CASCADE ON DELETE RESTRICT
) ENGINE=INNODB;


Als ik een record via phpmyadmin invoeg krijg ik geen error. Is mijn FOREIGN KEY verkeerd?

Dit is mijn PDO query:

			$insertNewEpisode			= 'INSERT INTO episodes (show_id, season, episode, date_added) VALUES
										(:show_id, :bierdopje_season, :bierdopje_episode, now())';
Je hebt een FOREIGN KEY (show_id) REFERENCES shows en wanneer er geen refererend show_id in shows voorkomt krijg je deze melding. Je zou in phpadmin ook een (dezelfde) error moeten krijgen. Misschien onderdrukt die phpadmin de error wel en is er geen insert?? Met deze show_id) REFERENCES shows dien je dus eerst een record aan te maken in show en het show_id te vullen met het id uit show.
Bedankt voor de reactie! Ik zal er morgen even naar kijken :) Had voor nu maar even de references weggelaten.

Reageren