J'ai des problèmes avec Navicat sur Ubuntu 16.04 LTS, j'essaie d'exécuter le script, et il arrive à la dernière table en disant qu'il ne peut pas ajouter une contrainte de clé étrangère, voici mon script, est-ce que quelqu'un sait que je me trompe quelque part?MySQL n'ajoutera pas plus d'une clé étrangère à la même table
Merci à des conseils
Voici mon script SQL:
CREATE TABLE `SMER` (
`Ssmer` INT(10) NOT NULL AUTO_INCREMENT,
`Nazivs` VARCHAR(255) NOT NULL,
PRIMARY KEY (`Ssmer`)
);
CREATE TABLE `Nastavnici` (
`Snast` INT(10) NOT NULL AUTO_INCREMENT,
`Imen` VARCHAR(255) NOT NULL,
PRIMARY KEY (`Snast`)
);
CREATE TABLE `PREDMETI` (
`SPRED` INT(10) NOT NULL AUTO_INCREMENT,
`NAZIVP` VARCHAR(255) NOT NULL,
PRIMARY KEY (`SPRED`)
);
CREATE TABLE `Studenti` (
`Indeks` INT(10) NOT NULL,
`Upisan` INT(10) NOT NULL,
`Imes` VARCHAR(255) NOT NULL,
`Mesto` VARCHAR(255),
`Datr` DATETIME NOT NULL,
`Ssmer` INT(10) NOT NULL,
PRIMARY KEY (`Indeks`, `Upisan`),
CONSTRAINT `FK_Studenti_Ssmer` FOREIGN KEY (`Ssmer`) REFERENCES `SMER` (`Ssmer`)
);
CREATE TABLE `USLOVNI` (
`Spred` INT(10) NOT NULL,
`UslPredmet` INT(10) NOT NULL,
PRIMARY KEY (`Spred`, `UslPredmet`),
CONSTRAINT `FK_Uslovni_Spred` FOREIGN KEY (`Spred`) REFERENCES `PREDMETI` (`SPRED`),
CONSTRAINT `FK_Uslovni_UslPredmet` FOREIGN KEY (`UslPredmet`) REFERENCES `PREDMETI` (`SPRED`)
);
CREATE TABLE `Planst` (
`Ssmer` INT(10) NOT NULL,
`Spred` INT(10) NOT NULL,
`Semestar` VARCHAR(255) DEFAULT NULL,
PRIMARY KEY (`Ssmer`, `Spred`),
CONSTRAINT `FK_Planst_Ssmer` FOREIGN KEY (`Ssmer`) REFERENCES `SMER` (`Ssmer`),
CONSTRAINT `FK_Planst_Spred` FOREIGN KEY (`Spred`) REFERENCES `PREDMETI` (`SPRED`)
);
CREATE TABLE `Angazovanje` (
`Snast` INT(10) NOT NULL,
`Spred` INT(10) NOT NULL,
`Ssmer` INT(10) NOT NULL,
PRIMARY KEY (`Snast`, `Spred`, `Ssmer`),
CONSTRAINT `FK_Angazovanje_Snast` FOREIGN KEY (`Snast`) REFERENCES `Nastavnici` (`Snast`),
CONSTRAINT `FK_Angazovanje_Spred` FOREIGN KEY (`Spred`) REFERENCES `PREDMETI` (`SPRED`),
CONSTRAINT `FK_Angazovanje_Ssmer` FOREIGN KEY (`Ssmer`) REFERENCES `SMER` (`Ssmer`)
);
CREATE TABLE `Prijave` (
`Spred` INT(10) NOT NULL,
`Indeks` INT(10) NOT NULL,
`Upisan` INT(10) NOT NULL,
`Snast` INT(10) NOT NULL,
`Datump` DATETIME DEFAULT NOW(),
`Ocena` INT(2) NOT NULL,
PRIMARY KEY (`Spred`, `Indeks`, `Upisan`, `Datump`),
CONSTRAINT `FK_Prijave_Spred` FOREIGN KEY (`Spred`) REFERENCES `PREDMETI` (`SPRED`),
CONSTRAINT `FK_Prijave_Indeks` FOREIGN KEY (`Indeks`) REFERENCES `Studenti` (`Indeks`),
CONSTRAINT `FK_Prijave_Upisan` FOREIGN KEY (`Upisan`) REFERENCES `Studenti` (`Upisan`),
CONSTRAINT `FK_Prijave_Snast` FOREIGN KEY (`Snast`) REFERENCES `Nastavnici` (`Snast`)
);
Voici le message d'erreur:
[Err] 1215 - Cannot add foreign key constraint
Collez également le message d'erreur exact? –
Je ne suis pas sûr, mais il se pourrait que deux clés étrangères différentes pour une même table 'Studenti' ne soient pas autorisées (du moins pas dans toutes les versions de MySQL). Avez-vous toujours la même erreur si vous supprimez l'une des contraintes? Par exemple, essayez de supprimer la ligne 'CONSTRAINT FK_Prijave_Upisan FOREIGN KEY (Upisan) REFERENCES Studenti (Upisan), et dites-nous si l'erreur existe encore ... –
Lorsque je supprime cette contrainte, cela fonctionne aussi – tehnodrom