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

 MySQL Discussion :

Problème clé étrangère/erreur 1452 [MySQL-8.0]


Sujet :

MySQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2024
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2024
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Problème clé étrangère/erreur 1452
    Bonjour à tous,

    Je suis débutant et je cherche à faire une liaison entre 2 tables.
    L'une a une clé primaire et je souhaite créer une clé étrangère sur la 2ème table pour faire le lien
    Table bien : Id_bien (clé primaire)
    Table vente : Id_bien en clé étrangère

    Quand je fais la liaison, j'effectue la commande suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ALTER TABLE `immo`.`vente` 
    ADD CONSTRAINT `FK_id_bien`
      FOREIGN KEY (`Id_bien`)
      REFERENCES `immo`.`bien` (`Id_bien`)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION;

    J'obtiens l'erreur suivante :

    ERROR 1452: Cannot add or update a child row: a foreign key constraint fails (`immo`.`#sql-1aa8_22`, CONSTRAINT `FK_id_bien` FOREIGN KEY (`Id_bien`) REFERENCES `bien` (`Id_bien`))
    SQL Statement:
    ALTER TABLE `immo`.`vente`
    ADD CONSTRAINT `FK_id_bien`
    FOREIGN KEY (`Id_bien`)
    REFERENCES `immo`.`bien` (`Id_bien`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION
    J'ai bien des valeurs concordantes entre les deux tables.
    J'ai regardé sur des forum mais les réponses me paraissent très abstraites.

    En pièce joint, les fichiers Excel des 2 tables.

    Merci par avance pour toutes explications
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 239
    Points : 12 870
    Points
    12 870
    Par défaut
    Bonjour,
    Le message indique qu'il y a des lignes dans la table vente qui violent la contrainte d'intégrité que tu tentes d'ajouter.
    Pour le vérifier, que donne cette requête:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select vente.*
    from immo.vente
    left outer join immo.bien on bien.id_bien = vente.id_bien
    where bien.id_bien is null
    Elle devraient te renvoyer les lignes fautives.

    Tatayo.

  3. #3
    Candidat au Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2024
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2024
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Suite à cette requête, j'ai le résultat suivant :

    # Id_vente, Id_bien, Date_vente, Valeur
    '18005', '34155', '2020-04-21', '240000'

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 239
    Points : 12 870
    Points
    12 870
    Par défaut
    C'est bizarre, la ligne en question est bien dans le fichier Excel.
    Quel est le type de données de la colonne id_bien ?

    Tatayo.

  5. #5
    Candidat au Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2024
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2024
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Tatayo,
    Le type est du INT

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 239
    Points : 12 870
    Points
    12 870
    Par défaut
    J'imagine que les colonnes en question sont indexées.
    Est-ce que tu as tenté de lancer une réparation/reconstruction ?

    Tatayo.

  7. #7
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 300
    Points : 39 641
    Points
    39 641
    Billets dans le blog
    9
    Par défaut
    Il est possible que le contenu du fichier excel ne corresponde plus au contenu réel de la table "bien" référencée par la contrainte.

    Quoi qu'il en soit, si la valeur id_bien 34155 est légitime, alors il faut rétablir la ligne portant cet identifiant dans la table "bien", sinon, il faut supprimer cette ligne de la table "vente".
    Après l'une ou l'autre opération, on peut installer la contrainte.

  8. #8
    Candidat au Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2024
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2024
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    En supprimant la ligne, cela fonctionne
    Merci à tous les deux

  9. #9
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 300
    Points : 39 641
    Points
    39 641
    Billets dans le blog
    9
    Par défaut
    Oui, mais il reste à savoir d'où provient cette ligne de vente orpheline, il ne faudrait pas perdre des lignes à tort...

  10. #10
    Candidat au Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2024
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2024
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    C'est ce que je suis en train de chercher.
    Je vous fais un retour dès que j'ai trouvé

  11. #11
    Candidat au Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2024
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2024
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    J'avais une ligne qui ne s'intégrait pas car j'avais une valeur Null et le champ était paramétré en Non Null.
    J'ai modifié et ça fonctionne

    Je vous remercie

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

Discussions similaires

  1. Ajouter clé étrangère à table non vide sans erreur 1452?
    Par gb-ch dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 17/06/2018, 17h45
  2. [MySQL-5.6] Ajouter clé étrangère - erreur 1452
    Par armoirapizza dans le forum MySQL
    Réponses: 2
    Dernier message: 12/03/2015, 20h47
  3. Erreur 1452 : Integrity constraint violation
    Par mobuho dans le forum Doctrine2
    Réponses: 0
    Dernier message: 11/06/2012, 13h01
  4. Erreur 1452 problème de création de clé secondaire
    Par beegees dans le forum Débuter
    Réponses: 0
    Dernier message: 03/05/2009, 20h34
  5. FOREIGN KEY de valeur NULL : erreur 1452
    Par Tchupacabra dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 21/09/2008, 20h32

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