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

Outils MySQL Discussion :

ajout clé étrangère problème syntaxe


Sujet :

Outils MySQL

  1. #1
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 110
    Points : 76
    Points
    76
    Par défaut ajout clé étrangère problème syntaxe
    Bonjour, je vous assure que j'ai fait le tour de tous les tutos, faq, forums possibles, mais j'ai le problème suivant : lorque je désire ardemment ajouter une clé étrangère via la commande suivante :

    ALTER TABLE affcommune
    ADD CONSTRAINT typeAffDansListe
    FOREIGN KEY FKtypeAff (INDtypeAff)
    REFERENCES typeAff (PRIMARY)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION

    mysql, via phpmyadmin, m'envoie, si je puis m'exprimer ainsi, proprement chier. Le gars dans l'ordinateur voit une erreur de syntaxe.
    Qui veux bien éclairer le ciel obscur de mon ignorance ?
    Je précise que j'utilise Innodb (normalement, mais comment le vérifier pour en être certain ? je sais juste que skip-innodb est commenté dans mysql.ini)
    Un seul point-virgule vous manque et tout est dépeuplé.

  2. #2
    Membre expérimenté
    Avatar de Adjanakis
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2004
    Messages : 739
    Points : 1 351
    Points
    1 351
    Par défaut
    Bonjour,

    Voici une adresse qui donnera surement l'explication :
    http://dev.mysql.com/doc/refman/5.0/...nstraints.html

    On peut notamment voir que la clause REFERENCES est mal remplie
    Pensez au tag

  3. #3
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 110
    Points : 76
    Points
    76
    Par défaut
    Merci de ta réponse Adjanakis. Malheureusement je dois être un puit de bêtise sans fond parce que je ne vois pas où est l'erreur dans references ?? typeAff est bien une table et PRIMARY est bien le nom de sa clé primaire, alors quid ??
    Un seul point-virgule vous manque et tout est dépeuplé.

  4. #4
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    PRIMARY est bien le nom de sa clé primaire
    T'es en train de dire qu'une des colonnes se nomme PRIMARY ?
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  5. #5
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 110
    Points : 76
    Points
    76
    Par défaut
    Merci de ta réponse. Non, c'est son nom d'index. La colonne s'appelle 'libelle'. D'après ce que j'ai compris de la syntaxe, c'est le nom d'index qu'il faut préciser, non ?
    Un seul point-virgule vous manque et tout est dépeuplé.

  6. #6
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 110
    Points : 76
    Points
    76
    Par défaut
    Juste au cas où, est-ce que le problème pourrait venir du fait que ma colonne référencé en tant que clé étrangère dans la table fille n'a pas encore de valeurs ? (j'essaie toutes les hypothèses!)
    Un seul point-virgule vous manque et tout est dépeuplé.

  7. #7
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    c'est le nom d'index qu'il faut préciser, non ?


    Citation Envoyé par Aide MySQL
    Un exemle :

    CREATE TABLE parent(id INT NOT NULL,
    PRIMARY KEY (id)
    ) TYPE=INNODB;
    CREATE TABLE child(id INT, parent_id INT,
    INDEX par_ind (parent_id),
    FOREIGN KEY (parent_id) REFERENCES parent(id)
    ON DELETE CASCADE
    ) TYPE=INNODB;
    C'est la colonne qu'on référence...

    En plus, si la colonne référencée ne fait pas l'objet d'un index, il faut en créer un : cf http://www.developpez.net/forums/viewtopic.php?t=481922
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  8. #8
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 110
    Points : 76
    Points
    76
    Par défaut
    Ok, ça marche, merci beaucoup ! Effectivement il faut mettre les noms de colonne et ne pas se fier à la syntaxe officielle suivante :

    [CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...) REFERENCES tbl_name (index_col_name, ...)

    qui est quand même trompeuse ! Pour moi index_col_name ça veut dire nom de l'index de colonne, merde !!!!

    Un seul point-virgule vous manque et tout est dépeuplé.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/04/2006, 14h22
  2. [Tableaux] problème syntaxe concaténation variable
    Par mussara dans le forum Langage
    Réponses: 3
    Dernier message: 01/03/2006, 11h24
  3. Clé étrangère problème lors de la création de la table.
    Par snoopy69 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 18/08/2005, 08h15
  4. Problème syntaxe sql
    Par devdev dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 11/04/2005, 16h31
  5. problème syntaxe sql
    Par mpat dans le forum ASP
    Réponses: 6
    Dernier message: 01/02/2005, 19h28

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