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

PostgreSQL Discussion :

Contrainte, Foreign Key et erreur SQL


Sujet :

PostgreSQL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    495
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 495
    Points : 396
    Points
    396
    Par défaut Contrainte, Foreign Key et erreur SQL
    Bonjour,

    J'ai une erreur dans un fichier sql et je ne comprends pas bien le message d'erreur..

    Voici les 3 lignes sql qui posent probleme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ALTER TABLE zzz_city ADD CONSTRAINT zzz_city_FK_1 FOREIGN KEY (alpha2) REFERENCES zzz_country (alpha2);
     
    ALTER TABLE zzz_hotel ADD CONSTRAINT zzz_hotel_FK_1 FOREIGN KEY (alpha2) REFERENCES zzz_country (alpha2);
     
    ALTER TABLE zzz_hotel ADD CONSTRAINT zzz_hotel_FK_2 FOREIGN KEY (city_code) REFERENCES zzz_city (city_code);
    Et l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ERREUR:  Il n'existe aucune contrainte correspondant aux clés données pour la table référencée «zzz_country»
    Il existe bien un champ "alpha2" dans les tables zzz_city et zzz_country.. Alors d'ou peut venir ce souci ?

    Postgresql 7.4 / Debian 4.0

    Le sql est generé par Propel, a partir d'un schema xml.

    Merci de vos avis.. par avance !

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 128
    Points : 143
    Points
    143
    Par défaut
    La traduction des applis de la 7.4 n'était pas géniale au début. Suivant votre version mineure de 7.4, vous pouvez avoir des messages erronées. Le mieux serait d'avoir le message en anglais.

    Autre conseil, vérifiez si la contrainte n'existe pas déjà sur les tables citées.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    495
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 495
    Points : 396
    Points
    396
    Par défaut
    hmmm, la le message, je l'ai dans phpgadmin.. comment faire pour l'avoir en anglais ? executer le sql dans psql directement ?

    J'ai verifié, comme contraintes, je n'ai que les clefs primaires, rien d'autre !

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 128
    Points : 143
    Points
    143
    Par défaut
    Il suffit d'indiquer :
    SET lc_message TO 'C';
    et, dans la même session, faire le ALTER.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    495
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 495
    Points : 396
    Points
    396
    Par défaut
    hmmm

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SQL error:
     
    ERREUR:  Paramètre de configuration "lc_message" non reconnu
     
    In statement:
    SET lc_message TO 'C';

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 128
    Points : 143
    Points
    143
    Par défaut
    Pardon, la variable est lc_messages (donc avec un s).

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    495
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 495
    Points : 396
    Points
    396
    Par défaut
    merci.. c'est sur que le message anglais est bien plus clair :
    ERROR: there is no unique constraint matching given keys for referenced table "zzz_country"
    j'ai rajouté la contrainte d'unicité, et hop, l'ALTER passe.. !

    Merci de ton aide !

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 128
    Points : 143
    Points
    143
    Par défaut
    Pour informations, j'ai corrigé la traduction pour les versions 7.4, 8.0, 8.1, 8.2 et pour la prochaine 8.3.

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

Discussions similaires

  1. [2000] Erreur Contrainte Foreign key
    Par bfoungues dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 28/05/2014, 10h12
  2. Contraintes FOREIGN KEY SQL vs code client
    Par Emmanuel Lecoester dans le forum Décisions SGBD
    Réponses: 144
    Dernier message: 09/08/2011, 16h17
  3. Erreur: conflit avec la contrainte FOREIGN KEY SAME TABLE
    Par useretl dans le forum Langage SQL
    Réponses: 2
    Dernier message: 25/10/2007, 12h27
  4. Réponses: 3
    Dernier message: 13/07/2007, 09h32
  5. Ajout contrainte FOREIGN KEY
    Par loukili81 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 22/03/2006, 22h49

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