MySQL-Fehler 150, kann keine Tabelle erstellen
Ich habe Probleme beim erstellen einer Tabelle, und ich verstehe nicht, was falsch ist. phpMyAdmin setzt die Fehler-Anzeige neben dem PRIMARY KEY Erklärung... ich verstehe nicht, warum dies falsch ist...
Diese Tabelle ist eine untergeordnete-Tabelle, die eine eins-zu-viele identifizierende Beziehung mit einer anderen Tabelle.
CREATE TABLE IF NOT EXISTS `ruilen`.`Voorwerpen` (
`voorwerpen_id` INT NOT NULL AUTO_INCREMENT ,
`naam` VARCHAR( 45 ) NOT NULL ,
`beschrijving` VARCHAR( 45 ) NULL ,
`Gebruikers_gebruiker_id` INT NOT NULL ,
PRIMARY KEY ( `voorwerpen_id` , `Gebruikers_gebruiker_id` ) ,
CONSTRAINT `fk_Voorwerpen_Gebruikers1` FOREIGN KEY ( `Gebruikers_gebruiker_id` ) REFERENCES `ruilen`.`Gebruikers` (
`gebruiker_id`
) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE = InnoDB;
MySQL said: Documentation
#1005 - Can't create table 'ruilen.voorwerpen' (errno: 150)
EDIT: das ist alles in der Dokumentation auf den Fehler code, die ich finden kann: Link
EDIT2: pic entfernt
EDIT3:
CREATE TABLE `gebruikers` (
`gebruiker_id` int(11) NOT NULL,
`naam` varchar(45) NOT NULL,
`straat` varchar(45) NOT NULL,
`gemeente` varchar(45) NOT NULL,
`mail` varchar(45) NOT NULL,
`beschrijving` varchar(45) DEFAULT NULL,
PRIMARY KEY (`gebruiker_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
InformationsquelleAutor KdgDev | 2009-08-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Überprüfen Sie, dass
Gebruikers_gebruiker_id
undGebruikers
.gebruiker_id
haben denselben Datentyp.Überprüfen Sie auch, dass
Gebruikers
.gebruiker_id
ist einPRIMARY KEY
imGebruikers
Update:
Haben Sie
ON DELETE SET NULL
definiert, während IhreGebruikers_gebruiker_id
ist definiert alsNOT NULL
.Fix it (änderung
ON DELETE CASCADE
oder nur die Klausel entfernen) und du wirst in der Lage sein, um den Verweis zu erstellen.Könnten Sie bitte diese Anweisung ausführen:
SHOW CREATE TABLE Gebruikers
und poste dessen Ausgabe hier?Getan. Ich Frage mich, ob ich brauche, um die gebruiker_id einzigartigen... aber MySQL workbench scheint nicht zu haben, die option...
ist ein
PRIMARY KEY
bedeutet diesUNIQUE
. Das eigentliche problem istON DELETE CASCADE
.Getan, es funktionierte. Vielen Dank für die Hilfe.
InformationsquelleAutor Quassnoi
Im meinem Fall in der Regel, weil der Datentyp nicht überein. Denken Sie daran, wenn es ein int überprüfen Sie, dass beide entweder unsigned oder nicht
InformationsquelleAutor Darren Cato
Dies ist nicht viel mit buggy Merkmal von mysql.
Es können zwei mögliche Gründe für dieses!
1) die Datentypen, die der PK-und FK nicht passen.
2) Dieser Fehler kann kommen, die in den Versionen vor 4.1, wo Sie brauchen, um explizit zu definieren-Indizes.
InformationsquelleAutor Manu
Einen weiteren Grund hinzufügen:
InformationsquelleAutor Newnius
In meiner persönlichen Erfahrung ist dies ein sehr buggy charakteristisch für MySQL - und die am wenigsten Aufwand ist es, einfach einen dump der Tabellenstruktur und Daten, dann löschen Sie die Tabelle, und führen Sie das SQL-dump und dann manuell neu erstellen Sie, die Indizes und foreign key-Einschränkungen wo nötig.
InformationsquelleAutor Christof Coetzee
Hatte ich eine Einschränkung mit dem gleichen Namen in einer anderen Tabelle.
Versuchen Sie, die Namen Ihrer Einschränkung.
InformationsquelleAutor nawlbergs