InnoDB Problem oder Syntaxfehler?

givwa

Grünschnabel
Weiss einer wo das Problem liegt?
Habe folgende Tabellen. AI_KUNDEN u. AI_KUNDEN_EMAIL funktionieren. AI_KUNDEN_RA funktioniert nicht.
Fehlermeldung:
#1005 - Can't create table '.\aidb\ai_kunden_ra.frm' (errno: 150)

CREATE TABLE `AI_KUNDEN` (
`KundenNr` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`Name` VARCHAR(250) NOT NULL,
`Vorname` VARCHAR(250) NOT NULL,
`Firma` VARCHAR(250),
`ErstellDatum` DATE NOT NULL
) TYPE=InnoDB;

CREATE TABLE `AI_KUNDEN_EMAIL` (
`KundenNr` INT(11) NOT NULL,
`Email` VARCHAR(200) NOT NULL,
`Datum` DATE NOT NULL,
`Bezeichnung` VARCHAR(250),
PRIMARY KEY (`KundenNr`,`Email`),
FOREIGN KEY (`KundenNr`) REFERENCES AI_KUNDEN(`KundenNr`) ON DELETE CASCADE ON UPDATE CASCADE
) TYPE=InnoDB;

CREATE TABLE `AI_KUNDEN_RA` (
`RA_Nr` INT(11) NOT NULL AUTO_INCREMENT,
`KundenNr` INT(11) NOT NULL,
`Name` VARCHAR(200) NOT NULL,
`Vorname` VARCHAR(200) NOT NULL,
`Strasse` VARCHAR(200) NOT NULL,
`HausNr` VARCHAR(200) NOT NULL,
`Plz` VARCHAR(200) NOT NULL,
`Ort` VARCHAR(200) NOT NULL,
`Land` VARCHAR(200) NOT NULL,
`ErstellDatum` DATE NOT NULL,
PRIMARY KEY (`RA_Nr`),
FOREIGN KEY (`KundenNr`) REFERENCES AI_KUNDEN(`KundenNr`) ON DELETE CASCADE ON UPDATE CASCADE
) TYPE=InnoDB;

Ich möchte das geprüft wird, ob es den Kunden gibt und beim UPDATE dessen ID verändert angepasst wird.
Das komische, bei der Tabelle AI_KUNDEN_EMAIL funktioniert es perfekt.

Kann mir hier einer weiterhelfen?
 
Hallo Givwa,

um auf Deine Frage:

Kann mir hier einer weiterhelfen?

zu antworten: Ja.

Nehme jedoch mal an, Du wolltest auch die Lösung wissen:

PHP:
CREATE TABLE `AI_KUNDEN_RA` (
`RA_Nr` INT(11) NOT NULL AUTO_INCREMENT,
`KundenNr` INT(11) NOT NULL,
`Name` VARCHAR(200) NOT NULL,
`Vorname` VARCHAR(200) NOT NULL,
`Strasse` VARCHAR(200) NOT NULL,
`HausNr` VARCHAR(200) NOT NULL,
`Plz` VARCHAR(200) NOT NULL,
`Ort` VARCHAR(200) NOT NULL,
`Land` VARCHAR(200) NOT NULL,
`ErstellDatum` DATE NOT NULL,
PRIMARY KEY (`RA_Nr`),
`Key (KundenNr)`,
FOREIGN KEY (`KundenNr`) REFERENCES AI_KUNDEN(`KundenNr`) ON DELETE CASCADE ON UPDATE CASCADE
) TYPE=InnoDB;

FK's nenötigen immer einen Index. (siehe Zeile `Key (KundenNr)`) Das war alles. Mir passiert manchmal auch dieser Flüchtigkeitsfehler. Einige Leute, die sich besonders mit InnoDB beschäftigen findest Du auf SDH

Hoffe geholfen zu haben.

Chris
 
Danke XChris,

du hast mich nicht direkt, aber ...du hast mich zum Ziel "gelenkt". :)

Bei deinem Code kam bei mir ein Syntax fehler oder so. Dein link hat mir aber dann doch noch weiter geholfen.

CREATE TABLE `AI_KUNDEN_RA` (
`RA_Nr` INT(11) NOT NULL AUTO_INCREMENT,
`KundenNr` INT(11) NOT NULL,
`Name` VARCHAR(200) NOT NULL,
`Vorname` VARCHAR(200) NOT NULL,
`Strasse` VARCHAR(200) NOT NULL,
`HausNr` VARCHAR(200) NOT NULL,
`Plz` VARCHAR(200) NOT NULL,
`Ort` VARCHAR(200) NOT NULL,
`Land` VARCHAR(200) NOT NULL,
`ErstellDatum` DATE NOT NULL,
PRIMARY KEY (`RA_Nr`),
INDEX KundenNr (`KundenNr`),
FOREIGN KEY (`KundenNr`) REFERENCES AI_KUNDEN(`KundenNr`) ON DELETE CASCADE ON UPDATE CASCADE
) TYPE=InnoDB;

Habe einfach einen INDEX KundenNr erstellt. Jetzt funktioniert es!

Ich bedanke mich für die schnelle helfende Antwort

Simon.....öhhh ich meinte givwa
 

Neue Beiträge

Zurück