Frage

Ich habe Probleme beim Erstellen einer Tabelle, und ich verstehe nicht, was los ist. phpMyAdmin setzt die Fehleranzeige neben dem PRIMARY KEY Erklärung ... Ich verstehe nicht, warum dies falsch ist ...

Diese Tabelle ist eine untergeordnete Tabelle, die eine mit einem anderen Tisch Eins-zu-vielen identifizierende Beziehung hat.

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 die gesamte Dokumentation über den Fehlercode 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
War es hilfreich?

Lösung

Überprüfen Sie, dass Gebruikers_gebruiker_id und Gebruikers.gebruiker_id haben denselben Datentyp.

Sie auch, dass Gebruikers.gebruiker_id überprüfen ist ein PRIMARY KEY in Gebruikers

Update:

Sie haben ON DELETE SET NULL definiert, während die Gebruikers_gebruiker_id als NOT NULL definiert ist.

Fix it (Änderung ON DELETE CASCADE oder einfach nur die Klausel entfernen), und Sie werden in der Lage sein, den Verweis zu erstellen.

Andere Tipps

Im meinem Fall seines typischerweise wegen eines Datentyp stimmt nicht überein. Denken Sie daran, wenn es sich um eine int-Check ist, dass beide entweder unsigned oder nicht

Dieses is'nt viel eine Buggy Eigenschaft von MySQL. Dafür kann es zwei Gründe geben! 1) die Datentypen des PK und FK nicht übereinstimmen. 2) Dieser Fehler kann vor 4.1 in Versionen kommen, wo Sie müssen explizit Indizes definieren.

Ein weiterer Grund hinzu:

  

Verschiedene charset oder Motor wird auch dieses Problem verursachen

In meiner Person Erfahrung dieses eine sehr buggy charakteristisch für MySQL - und die am wenigsten Aufwand ist nur die Tabellenstruktur und Daten-Dump, dann die Tabelle löschen und neu starten Sie das SQL von der Müllkippe und dann manuell Indizes neu erstellen und Fremdschlüssel-Constraints, wo nötig.

Ich hatte eine Einschränkung mit dem gleichen Namen in einer anderen Tabelle. Versuchen Sie, den Namen der Einschränkung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top