MySQL Integrity Constraint Violation

Nambot

Mitglied
Hi!
Ich hantiere zum ersten Mal mit "Foreign Keys" und "CASCADE" und den ganzen Sachen, habe allerdings gleich ein Problem.
Das Datenbanklayout sieht folgendermaßen aus:
Code:
CREATE TABLE
	group
		(id INT AUTO_INCREMENT,
		name VARCHAR(255) UNIQUE,
		description TEXT,
		created_at DATETIME,
		updated_at DATETIME,
		PRIMARY KEY(id))
	ENGINE = INNODB;
CREATE TABLE
	group_permission
		(group_id INT,
		permission_id INT,
		created_at DATETIME,
		updated_at DATETIME,
		PRIMARY KEY(group_id, permission_id))
	ENGINE = INNODB;
CREATE TABLE
	permission
		(id INT AUTO_INCREMENT,
		name VARCHAR(255) UNIQUE,
		description TEXT,
		created_at DATETIME,
		updated_at DATETIME,
		PRIMARY KEY(id))
	ENGINE = INNODB;

ALTER TABLE group_permission ADD FOREIGN KEY (permission_id) REFERENCES permission(id) ON DELETE CASCADE;
ALTER TABLE group_permission ADD FOREIGN KEY (group_id) REFERENCES group(id) ON DELETE CASCADE;
So wenn ich jetzt in die Tabelle "group_permission" einen neuen Eintrag mahcen will bekomme ich folgenden Fehler:
Code:
Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`sf_test/sf_guard_group_permission`, CONSTRAINT `sf_guard_group_permission_ibfk_1` FOREIGN KEY (`permission_id`) REFERENCES `sf_guard_permission` (`id`) ON DELETE CASCADE)
Ich habe leider keine Ahnung wie ich das beheben soll, da für mich auch unverständlich ist, wieso er sich um "add" und "update" sorgen macht, obwohl er sich nur um "delete" sorgen machen soll ... Wie gesagt ich bin neu auf dem Gebiet, vielleicht ist es etwas ganz simples ... Keine Ahnung ^^
Ach und ich benutze zur Zeit MySQL 5.0.41.
Ich hoffe mir kann jemand von euch helfen.
schonmal vielen Dank

nambot
 
was hast du denn für Nutzdaten in group und permission? Die Tabellen müssen gefüllt sein und in group_permission müssen in den feldern permission_id und group_id die entsprechenden indizes aus den anderen beiden tabellen eingetragen werden.

gruß

katosan
 
Zuletzt bearbeitet:
Vielen Dank für deine Antwort.
Habe mir dann mal den Query angeschaut (war automatisch generiert mit Doctrine), und er hatte sich geweigert "permission_id" beim Insert in die Verknüfungstabelle mit anzugeben. Weiß nicht genau warum. Habe dann die Primary Keys entfernt und eine extra Spalte id hinzugefügt, dann hat es funktioniert.
Nicht die eleganteste Lösung, aber naja.
Vielen Dank
 
Zurück