Fehler beim Einfügen eines Datensatzes

bassman

Neuer Benutzer
Beiträge
2
Hallo ich möchte in eine Kindtabelle Datensätze einfügen, bekomme aber die Fehlermeldung:
Code:
Cannot add or update a child row: a foreign key constraint fails (`verein`.`mitglieder`, CONSTRAINT `jhgjh` FOREIGN KEY (`Familienstand_Nr`) REFERENCES `familienstand` (`F-Stand_ID`) ON DELETE NO ACTION)

Nun weiß ich, dass der Fremdschlüssel als Primärschlüssel in der Vatertabelle vorkommen muss - tut er auch und trotzdem bekomme ich diese Fehlermeldung. Vielleicht liegt es an der Tabellendefinition ich poste sie hier mal:
Kindtabelle
Code:
REATE TABLE `mitglieder` (
 `M-ID` int(11) NOT NULL AUTO_INCREMENT,
 `Vorname` varchar(20) CHARACTER SET utf8 DEFAULT NULL,
 `Nachname` varchar(20) CHARACTER SET utf8 DEFAULT NULL,
 `Ort_Nr` int(11) DEFAULT NULL,
 `Geburtsdatum` datetime DEFAULT NULL,
 `Geschlecht` varchar(1) CHARACTER SET utf8 DEFAULT NULL,
 `Familienstand_Nr` int(11) DEFAULT NULL,
 `Strasse` varchar(30) CHARACTER SET utf8 DEFAULT NULL,
 `Hs-Nr` varchar(5) CHARACTER SET utf8 DEFAULT NULL,
 `Tel` varchar(20) CHARACTER SET utf8 DEFAULT NULL,
 `Grundbeitrag` double DEFAULT NULL,
 PRIMARY KEY (`M-ID`),
 KEY `FamilienstandMitglieder` (`Familienstand_Nr`),
 KEY `PLZMitglieder` (`Ort_Nr`),
 KEY `jhgjh_idx` (`Familienstand_Nr`),
 CONSTRAINT `jhgjh` FOREIGN KEY (`Familienstand_Nr`) REFERENCES `familienstand` (`F-Stand_ID`) ON DELETE NO ACTION,
 CONSTRAINT `kjbkj` FOREIGN KEY (`Ort_Nr`) REFERENCES `ort` (`Ort_ID`) ON DELETE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1

Vatertabelle
Code:
CREATE TABLE `familienstand` (
 `F-Stand_ID` int(11) NOT NULL DEFAULT '0',
 `Familienstand` varchar(20) CHARACTER SET utf8 DEFAULT NULL,
 PRIMARY KEY (`F-Stand_ID`),
 UNIQUE KEY `Familienstand` (`Familienstand`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

Irgendwie sehe ich den Fehler nicht. Ich habe versucht einen Datensatz mit der Familienstandnr 1 einzufügen.

Wäre nett, wenn mir jemand einen Tipp geben könnte.

Grüße
 
Werbung:
Hallo ich möchte in eine Kindtabelle Datensätze einfügen, bekomme aber die Fehlermeldung:
Code:
Cannot add or update a child row: a foreign key constraint fails (`verein`.`mitglieder`, CONSTRAINT `jhgjh` FOREIGN KEY (`Familienstand_Nr`) REFERENCES `familienstand` (`F-Stand_ID`) ON DELETE NO ACTION)

Nun weiß ich, dass der Fremdschlüssel als Primärschlüssel in der Vatertabelle vorkommen muss - tut er auch und trotzdem bekomme ich diese Fehlermeldung. Vielleicht liegt es an der Tabellendefinition ich poste sie hier mal:
Kindtabelle


Vatertabelle
Code:
CREATE TABLE `familienstand` (
...
) ENGINE=MyISAM DEFAULT CHARSET=latin1

Irgendwie sehe ich den Fehler nicht. Ich habe versucht einen Datensatz mit der Familienstandnr 1 einzufügen.

Wäre nett, wenn mir jemand einen Tipp geben könnte.

Grüße

Siehst Du es jetzt?

Noch nicht?

MyISAM.

Code:
mysql> create table vater (id int primary key) engine=myisam;
Query OK, 0 rows affected (0.00 sec)

mysql> create table kind (name text, fk int, constraint `xxx` foreign key(`fk`) references `vater`(`id`) on delete no action) engine=innodb;
ERROR 1005 (HY000): Can't create table 'db183175_2.kind' (errno: 150)
mysql> drop table vater;
Query OK, 0 rows affected (0.00 sec)

mysql> create table vater (id int primary key) engine=innodb;
Query OK, 0 rows affected (0.07 sec)

mysql> create table kind (name text, fk int, constraint `xxx` foreign key(`fk`) references `vater`(`id`) on delete no action) engine=innodb;
Query OK, 0 rows affected (0.06 sec)

Müll halt, MySQL, MyISAM, ... es gibt bessere Alternativen.


Andreas
 
Werbung:
Hallo,

danke für den Hinweis. Zur Erklärung: ich habe die Tabellen nicht selbst erstellt, sondern mit irgendeinem Tool aus Access heraus exportiert. Das Export-Programm hat das wohl selbst einfgefügt, deshalb ist mir das nicht aufgefallen. Muss ich wohl ein alternatives Programm suchen, oder manuell die Definition anpassen.

Vielen Dank für eure Hilfe.
 
Zurück
Oben