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:

akretschmer

Datenbank-Guru
Beiträge
9.160
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:

bassman

Neuer Benutzer
Beiträge
2
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.
 
Oben