Problème de script: errno 150

Résolu/Fermé
pyfeu Messages postés 38 Date d'inscription vendredi 23 mai 2008 Statut Membre Dernière intervention 26 novembre 2009 - 27 avril 2009 à 11:13
P@t@ch0n Messages postés 565 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 28 décembre 2009 - 27 avril 2009 à 21:00
re je repost un truc car je me suis rendu compte que mon ancien post n'était pas clair (le sujet) et que je n'étais pas logué :/
Donc désolé pour le double post d'avance!

Bonjour,
voila environ 5h que je passe sur un script qui ne marche pas ... ca marque jusque errno 150.
Je sais que le problème vient de la référence sur la clé étrangère Realisation .
Voici le script :

## Klein Pierre Yves ##
##This database is a mySql database for a website ##

############################################################­###################
## Deletion of tables
############################################################­###################
DROP TABLE IF EXISTS Sauvg;
DROP TABLE IF EXISTS InterMachine;
DROP TABLE IF EXISTS Image;
DROP TABLE IF EXISTS Machine;
DROP TABLE IF EXISTS Intervention;
DROP TABLE IF EXISTS Groupe;
DROP TABLE IF EXISTS Famille;

############################################################­###################
## Creation of tables
############################################################­###################

CREATE TABLE Famille(
Id_Famille INT(3) PRIMARY KEY AUTO_INCREMENT ,
Libelle VARCHAR(50)
)TYPE=INNODB;

CREATE TABLE Groupe(
Id_Groupe INT(3) PRIMARY KEY AUTO_INCREMENT ,
Libelle VARCHAR(20) NOT NULL UNIQUE
)TYPE=INNODB;

CREATE TABLE Intervention(
Id_Intervention INT(10) PRIMARY KEY AUTO_INCREMENT ,
Famille INT(3) ,
CONSTRAINT fk_Affectation4 FOREIGN KEY (Famille) REFERENCES Famille(Id_Famille),
ElementInter VARCHAR(100) ,
Description TEXT ,
Niveau INT(1) ,
Frequence INT(4) ,##Si seulement besoin ou usure mettre 9999
Operateur VARCHAR(10)
)TYPE=INNODB;



CREATE TABLE Machine(
Id_Machine INT PRIMARY KEY AUTO_INCREMENT,
Nom_Machine VARCHAR(50) ,
Id_Ordinateur VARCHAR(50) ,#Si il est affecté a cette machine ou si il est administrateur
Serie VARCHAR(20) ,
DateRecep DATE ,
MiseEnService DATE ,
Marque VARCHAR(30) ,
Id_Groupe INT(3) ,
CONSTRAINT fk_Affectation1 FOREIGN KEY (Id_Groupe) REFERENCES Groupe(Id_Groupe)
)TYPE=INNODB;

CREATE TABLE Image(
Id_Image INT(3) PRIMARY KEY AUTO_INCREMENT ,
Id_Machine INT ,
CONSTRAINT fk_Image FOREIGN KEY (Id_Machine) REFERENCES Machine(Id_Machine) ,
Id_Intervention INT(10) ,
CONSTRAINT fk_Image2 FOREIGN KEY (Id_Intervention) REFERENCES Intervention(Id_Intervention)
)TYPE=INNODB;


CREATE TABLE InterMachine(
Id_Machine INT ,
CONSTRAINT fk_Affectation2 FOREIGN KEY (Id_Machine) REFERENCES Machine(Id_Machine) ,
Id_Intervention INT(10) ,
CONSTRAINT fk_Affectation3 FOREIGN KEY (Id_Intervention) REFERENCES Intervention(Id_Intervention) ,
CONSTRAINT pk_Affectation PRIMARY KEY (Id_Machine, Id_Intervention) ,
DateProchaineInter DATE ,
Realisation DATE
)TYPE=INNODB;

CREATE TABLE Sauvg(
Id_Machine INT ,
CONSTRAINT fk_Affectation10 FOREIGN KEY (Id_Machine) REFERENCES Machine(Id_Machine) ,
Id_Intervention INT(10) ,
CONSTRAINT fk_Affectation30 FOREIGN KEY (Id_Intervention) REFERENCES Intervention(Id_Intervention) ,
date_Realisation DATE ,
CONSTRAINT fk_Affectation20 FOREIGN KEY (Date_Realisation) REFERENCES InterMachine(Realisation) ,
CONSTRAINT pk_Affectation60 PRIMARY KEY (Id_Machine, Id_Intervention, Date_Realisation)
)TYPE=INNODB;


############################################################­###################
############################ Tests ############################################
############################################################­###################
##
SELECT * FROM Intervention;
SELECT * FROM Machine;
SELECT * FROM InterMachine;
A voir également:

2 réponses

doctormad Messages postés 430 Date d'inscription mercredi 28 novembre 2007 Statut Membre Dernière intervention 2 avril 2015 99
27 avril 2009 à 20:40
Salut,

Tes clefs ont alternativement du type FOREIGN KEY (Id_Machin) REFERENCES Intervention(Id_Machin) , ou FOREIGN KEY (Machin) REFERENCES Intervention(Id_Machin) ,

Peut-être faut-il uniformiser le tout ?

A oui aussi tout les clefs étrangère doivent être déclarées comme index.

Enfin perso les fk je trouve ça inutle donc je suis pas forcément le meilleur conseiller ^^
0
P@t@ch0n Messages postés 565 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 28 décembre 2009 85
27 avril 2009 à 21:00
CREATE TABLE InterMachine(
Id_Machine INT ,
CONSTRAINT fk_Affectation2 FOREIGN KEY (Id_Machine) REFERENCES Machine(Id_Machine) ,
Id_Intervention INT(10) ,
CONSTRAINT fk_Affectation3 FOREIGN KEY (Id_Intervention) REFERENCES Intervention(Id_Intervention) ,
CONSTRAINT pk_Affectation PRIMARY KEY (Id_Machine, Id_Intervention) ,
DateProchaineInter DATE ,
Realisation DATE
)TYPE=INNODB; 
Il est où l'index ?
Sans index sur Realisation, normal que tu es une erreur....

Et ne me dis pas que ça fonctionne toujours pas, je viens de tester ton SQL, et pas d'erreur avec cet index.
0