IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Procédural MySQL Discussion :

Problème de clefs étrangères


Sujet :

SQL Procédural MySQL

  1. #1
    Membre habitué Avatar de rieppe
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2004
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 115
    Points : 129
    Points
    129
    Par défaut Problème de clefs étrangères
    Bonjour à vous.

    Si je viens jusqu'ici c'est parce que j'ai passé un apres midi à tenter de faire marcher mon code :o

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    Drop Table IF EXISTS Niveau;
    Create table Niveau (
    	idNiveau int(11) not null auto_increment,
    	LibelleNiveau Varchar(20),
    	Primary key (idNiveau)
    ) ENGINE=InnoDB CHARSET=latin1;
     
    Drop Table IF EXISTS Fonction;
    Create table Fonction (
    	idFonction int(11) not null auto_increment,
    	LibelleFonction	Varchar(20),
    	Primary Key (idFonction)
    )ENGINE=InnoDB CHARSET=latin1;
     
    Drop Table IF EXISTS Agence;
    Create table Agence (
    	idAgence int(11) not null auto_increment,
    	LibelleAgence Varchar(20),
    	Primary Key (idAgence)
    )ENGINE=InnoDB CHARSET=latin1;
     
    Drop Table IF EXISTS Processus;
    Create table Processus (
    	idProcessus int(11) not null auto_increment,
    	LibelleProcessus Varchar(20),
    	Primary Key (idProcessus)
    )ENGINE=InnoDB CHARSET=latin1;
     
    Drop Table IF EXISTS SousProcessus;
    Create table SousProcessus (
    	idSousProcessus int(11) not null auto_increment,
    	LibelleSousProcessus Varchar(20),
    	Primary Key (idSousProcessus)
    )ENGINE=InnoDB CHARSET=latin1;
     
    Drop Table IF EXISTS ModeContact;
    Create table ModeContact (
    	idModeContact int(11) not null auto_increment,
    	LibelleModeContact Varchar(20),
    	Primary Key (idModeContact)
    )ENGINE=InnoDB CHARSET=latin1;
     
    Drop Table IF EXISTS Domaine;
    Create table Domaine (
    	idDomaine int(11) not null auto_increment,
    	LebelleDomaine Varchar(20),
    	Primary Key (idDomaine)
    )ENGINE=InnoDB CHARSET=latin1;
     
    Drop Table IF EXISTS Utilisateur;
    Create table Utilisateur (
    	idUtilisateur 	int(11) not null auto_increment primary key,
    	Nom Varchar(20),
    	Prenom Varchar(20),
    	Trigramme Varchar(3),
    	Pass Varchar(10),
    	Tel Varchar(15),
    	telPort Varchar(15),
    	Mail Varchar(50),
    	Niveau int(11),
    	Agence int(11),
    	Fonction int(11),
    	index(Niveau),
    	index(Agence),
    	index(Fonction),
    	index(Trigramme),
    	Foreign key Niveau References Niveau (idNiveau),
    	Foreign key Agence References Agence (idAgence),
    	Foreign key Fonction References Fonction (idFonction)
    )ENGINE=InnoDB CHARSET=latin1;
     
    Drop Table IF EXISTS InfosNv1;
    Create table InfosNv1 (
    	idInfosNv1 int(11) not null auto_increment,
    	Solution Text,
    	AppelantInforme int,
    	DateRappel Date,
    	HeureRappel Time,
    	OperateurN2Transfert int,
    	DateTransfert Date,
    	Commentaire Text,
    	index(OperateurN2Transfert),
    	Primary Key (idInfosNv1),
    	Foreign Key OperateurN2Transfert References Utilisateur(idUtilisateur)
    )ENGINE=InnoDB CHARSET=latin1;
     
    Drop Table IF EXISTS InfosNv2;
    Create table InfosNv2 (
    	idInfosNv2 int(11) not null auto_increment,
    	Solution Text,
    	OperateurN3Transfert int,
    	DateTransfert Date,
    	Commentaire Text,
    	index(OperateurN3Transfert),
    	Primary Key (idInfosNv2),
    	Foreign Key OperateurN3Transfert References Utilisateur(idUtilisateur)
    )ENGINE=InnoDB CHARSET=latin1;
     
    Drop Table IF EXISTS InfosNv3;
    Create table InfosNv3 (
    	idInfoNv3 int(11) not null auto_increment,
    	Solution Text,
    	Commentaire Text,
    	primary key (idInfoNv3)
    )ENGINE=InnoDB CHARSET=latin1;
     
    Drop Table IF EXISTS Ticket;
    #auto_increment = Valeur Pour commencer la numérotation à partir de valeur x)
    Create table Ticket (
    	idTicket int(11) not null auto_increment,
    	Appelant int,
    	OuvertPar int,
    	FermePar int,
    	DateOuverture Date,
    	HeureOuverture Time,
    	DateFermeture Date,
    	HeureFermeture Time,
    	Questiion Text,
    	FichierAssocié Varchar(20),
    	Processus int,
    	SousProcessus int,
    	ModeContact int,
    	Domaine int,
    	InfosNv1 int,
    	InfosNv2 int,
    	InfosNv3 int,
    	index(Processus),
    	index(SousProcessus),
    	index(ModeContact),
    	index(Domaine),
    	index(InfosNv1),
    	index(InfosNv2),
    	index(InfosNv3),						                  
    	Primary key (idTicket),                     
    	Foreign key Processus References Processus References Processus(idProcessus	),
    	Foreign key SousProcessus References SousProcessus References SousProcessus(idSousProcessus),
    	Foreign key ModeContact References ModeContact References ModeContact(idModeContact),
    	Foreign key Domaine  References Domaine References Domaine(idDomaine),
    	Foreign key InfosNv1 References InfosNv1 References InfosNv1(idInfosNv1),
    	Foreign key InfosNv2 References InfosNv2 References InfosNv2(idInfosNv2),
    	Foreign key InfosNv3 References InfosNv3 References InfosNv3(idInfosNv3),
    )ENGINE=InnoDB CHARSET=latin1;
    Je travail sous Apache 2.0.40 / MySQL 4.1.16

    L'erreur renvoyée est "ERROR 1064 (42000)"

    Je ne comprend pas pourquoi ca ne veut pas s'éxecuter

    J'ai inclut mon code en piece jointe Ca peut être utile

    Cordialement,

    Rieppe
    Fichiers attachés Fichiers attachés

  2. #2
    Membre confirmé
    Avatar de DBProg
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 242
    Points : 579
    Points
    579
    Par défaut
    Salut !

    Je n'ai pas testé ton script, mais tu as une erreur dans ces lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	Foreign key Processus References Processus References Processus(idProcessus	),
    	Foreign key SousProcessus References SousProcessus References SousProcessus(idSousProcessus),
    	Foreign key ModeContact References ModeContact References ModeContact(idModeContact),
    	Foreign key Domaine  References Domaine References Domaine(idDomaine),
    	Foreign key InfosNv1 References InfosNv1 References InfosNv1(idInfosNv1),
    	Foreign key InfosNv2 References InfosNv2 References InfosNv2(idInfosNv2),
    	Foreign key InfosNv3 References InfosNv3 References InfosNv3(idInfosNv3),
    Tous les References sont en double, premièrement, puis, il y a une virgule à la fin de la dernière ligne qui va également poser problème. Corrige déjà ça, ça devrait aller mieux après

  3. #3
    Membre habitué Avatar de rieppe
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2004
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 115
    Points : 129
    Points
    129
    Par défaut
    Oula les références en double n'y étaient pas :o

    Par contre la virgule peut être :/

    Je vais tester. Si c'est ca j'aurais dérangé pour rien et je m'en veux ^^

  4. #4
    Membre habitué Avatar de rieppe
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2004
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 115
    Points : 129
    Points
    129
    Par défaut
    Oui comme je pensais, ça ne fonctionne toujorus pas.

    J'ai une erreur qui se situe avant les lignes qui faisaient défaut, au niveau de la table utilisateur. celle-là même qui utilise en premier les clefs étrangères.

    PS: j'ai changé le fichier SQL que j'avais mis en attachement avec la correction d'erreurs apportée

  5. #5
    Membre confirmé
    Avatar de DBProg
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 242
    Points : 579
    Points
    579
    Par défaut
    Eh eh, en fait c'est parce que tu n'as pas bien lu le manuel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FOREIGN KEY (Niveau) REFERENCES Niveau( idNiveau ) ,
    FOREIGN KEY (Agence) REFERENCES Agence( idAgence ) ,
    FOREIGN KEY (Fonction) REFERENCES Fonction( idFonction )
    L'erreur était les parenthèses sur les champs concernés par les clés étrangères.

  6. #6
    Membre habitué Avatar de rieppe
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2004
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 115
    Points : 129
    Points
    129
    Par défaut
    Effectivement j'ai fais une erreur noobesque :/

    Merci en tout cas ^^'

    Il me reste juste une erreur 150

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ERROR 1005 (HY000): Can't create table './beezdev/Ticket.frm' (errno: 150)
    Il me semble que c'est une erreur liée aux clefs étrangères je me met de suite dessus

    EDIT : Je remet à jour le script que j'ai mis en attachement

  7. #7
    Membre habitué Avatar de rieppe
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2004
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 115
    Points : 129
    Points
    129
    Par défaut
    Ok j'ai réglé le problème.

    J'avais mis pour les types entier des int(11) qui, apparament, n'étaient pas appréciés par MySQL ^^'

    Je remet a jour mon script en attachement pour ceux à qui cela pourrait servir.

    Merci beaucoup de votre aide chaleureuse

  8. #8
    Membre confirmé
    Avatar de DBProg
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 242
    Points : 579
    Points
    579
    Par défaut
    EDIT : j'étais un peu en retard finalement Merci pour la réponse !

    Ben écoute là j'ai cherché un peu, et la suptilité m'échappe. Je n'ai pas le temps de trop regarder, mais normalement cette erreur apparait lorsque :

    • La table référencée n'est pas de type InnoDB
    • La colonne référencée dans l'autre table n'est pas unique
    • La colonne référencée dans l'autre table n'a pas le même type
    Et ici ce n'est pas le cas dans ce que j'ai regardé, étrange ! Précise quand même une taille sur tes champs, tu mets int, même sir par défaut c'est 11, je pense que c'est mieux de le mettre (mais ça ne résout pas le problème j'ai essayé).

    Tiens moi au courant quand tu auras trouvé !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème rs 232
    Par remy059 dans le forum Composants
    Réponses: 4
    Dernier message: 09/08/2006, 13h14
  2. [VB5] probleme rs 232
    Par moi214 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 28/05/2006, 23h25
  3. [Comm] Changer les Bauds dans une com RS-232
    Par philippe13 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 27/01/2006, 11h08
  4. RS 232 envoyer des donnees
    Par psyko_flex dans le forum C
    Réponses: 2
    Dernier message: 22/11/2005, 19h49
  5. Aide sur la RS 232
    Par Andr0 dans le forum C
    Réponses: 5
    Dernier message: 12/04/2005, 14h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo