MySQL weigerd foreign keys aan te maken

  • Onderwerp starter Onderwerp starter Simso
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Simso

Gebruiker
Lid geworden
7 jul 2012
Berichten
5
Hallo Helpmijers,



Ik heb de volgende uitdaging.

Ik heb een tabellen structuur in
WAMP server 2.1 gemaakt. Dit word een database waarmee ik voor een
reisbureau een database aan het ontwikkelen ben. Hieronder in sql de volgende tabel structuur.
Het creeeren van de tabellen gaat goed. Het vreemde is dat de eerste alter opdracht waarmee
een foreign key word aangemaakt goed gaat maar de tweede alter opdracht niet. In opbouw en verwijzingen
zijn zij hetzelfde en tocht gaat het niet goed. Wie weet waardoor dit probleem veroorzaakt word?
Na uitvoer van de tweede Alter opdracht verschijnt deze foutmelding:
Code:
#1005 - Can't create table 'spirit.#sql-14a0_ca' (errno: 150)

CREATE DATABASE`SpirIT` ;
CREATE TABLE `SpirIT`.`Enquete` (
 `Enquetenummer` INT(4) NOT NULL ,
 `Vraagnummer` INT(5) UNIQUE NOT NULL,
 `Vraag` VARCHAR(500) UNIQUE NOT NULL,
 `Antwoord` VARCHAR(600) NULL,
 `Opmerkingen` VARCHAR(600) NULL,
 `Klant_Enquete` INT(4) UNIQUE NULL,
 PRIMARY KEY (`Enquetenummer`) 
) ENGINE= InnoDB;
CREATE TABLE `SpirIT`.`Klant` (
 `Klantnummer` INT(4) UNIQUE NOT NULL,
 `Naam` VARCHAR(50) UNIQUE NOT NULL,
 `Geboortedatum` DATE NULL,
 `Geslacht` VARCHAR(5) NULL,
 `Straat` VARCHAR(50) NOT NULL,
 `Huisnummer` VARCHAR(5) NOT NULL,
 `Postcode` VARCHAR(6) NOT NULL,
 `Plaats` VARCHAR(50) NOT NULL,
 `Telefoonnummer` INT(10) UNIQUE NOT NULL,
 `EMAIL` VARCHAR(40) NULL, 
 `Rekeningnummer` INT(10) UNIQUE NOT NULL,
  PRIMARY KEY (`Klantnummer`)
) ENGINE = InnoDB;
CREATE TABLE `SpirIT`.`Factuur` (
 `Factuurnummer` INT(4) UNIQUE NOT NULL,
 `klantfactuur` INT(4) UNIQUE NOT NULL,
 `Bedrag` VARCHAR(9) NULL,
 `Factureerdatum` DATE NULL,
 `Datum_Betaald` DATE NULL,
 `Rekeningnummer` INT(10) NOT NULL,
 `Klant_Factuur` INT(4) UNIQUE NOT NULL,
 `Reisadviseur_Factuur` INT(4) NOT NULL,
 PRIMARY KEY (`Factuurnummer`)
) ENGINE = InnoDB;
ALTER TABLE `Enquete` ADD FOREIGN KEY(`Klant_Enquete`) REFERENCES `SpirIT`.`Klant`(`Klantnummer`)
ON DELETE SET NULL ON UPDATE SET NULL;
ALTER TABLE `Factuur` ADD FOREIGN KEY(`klantfactuur`) REFERENCES `SpirIT`.`Klant`(`Klantnummer`)
ON DELETE SET NULL ON UPDATE SET NULL;
 
Laatst bewerkt door een moderator:
Meestal krijg je deze doordat er ergens in je code een tegenstrijdigheid zit.. In dit geval doordat deze kolom op NOT NULL staat terwijl je in de foreign key definieert dat dit veld leeg gemaakt moet worden.[sql]`klantfactuur` INT(4) UNIQUE NOT NULL,[/sql]Aanpassen naar NULL, dan wordt de key wel aangemaakt.[sql]`klantfactuur` INT(4) UNIQUE NULL,[/sql]
 
Opgelost

Bedankt voor het antwoord. Het probleem is opgelost en ik kan weer verder.
 
Zet dan even de vraag op opgelost: Klik op "Zet status opgelost" op de donkerblauwe balk, bijna bovenaan deze webpagina [die met "Zet status opgelost", "Onderwerp opties" etc.]

tijs.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan