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

MkFramework Discussion :

Integrity constraint violation: 1451


Sujet :

MkFramework

  1. #1
    Membre confirmé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 701
    Points : 597
    Points
    597
    Par défaut Integrity constraint violation: 1451
    Salut,

    Je cherche à retourner un message lorsque je tente de supprimer une entrée BDD soumise à une contrainte.


    J'ai tenté ça dans un premier temps mais sans succès.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public function processDelete(){
    [...]
    try {
                        $oRmsVlan->delete();
                    } catch (PDOException $e) {
                        echo $e->getMessage();
                        die('toto');
                    }
    Une autre idée ?
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !


    Albert Einstein

  2. #2
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Quand vous executez cette requete, il y a une stacktrace d'affiché

    peut etre en utlisant directement l'objet pdo


    dans votre classe model:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    try{
    $this->getSgbd()->getPdo->execute('ma requte de delete'). 
    }catch(...
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  3. #3
    Membre confirmé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 701
    Points : 597
    Points
    597
    Par défaut
    Merci pour ce retour.

    J'ai tenté un truc du genre dans le model, car la proposition faite précédemment retournait :
    Undefined property: sgbd_pdo_mysql::$getPdo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
            public function deleteVlan($idVlan){           
                try{
                    $this->getSgbd()->getPdo()->execute("DELETE FROM rmsVlan WHERE idVlan=$idVlan");
                }catch (PDOException $e) {
                  echo '<PRE>';var_dump($idVlan);echo '</PRE>';die('cassé');      
                }
            }
    Mais sans succès.

    Le message à l'origine de la question est celui ci :

    Fichier : /usr/share/nginx/html/mkframeworkPackage/Lib/mkframeworkLib/abstract/abstract_sgbd_pdo.php ligne 243

    Message : PDOStatement::execute(): SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (`RmsInventaire`.`rmsGrpMacAddr`, CONSTRAINT `cont_vlanGrp` FOREIGN KEY (`vlan_id`) REFERENCES `rmsVlan` (`idVlan`))
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !


    Albert Einstein

  4. #4
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    oui getPdo() ,'ai répondu de mémoire j'avais oublié les parenthèse pour appeler la méthode et non la propriété

    et le code que vous citez ne passe pas dans l'exception ?
    vous n'avez pas l'affichage de la variable (via le var_dum) avec le mot "cassé" ?
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  5. #5
    Membre confirmé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 701
    Points : 597
    Points
    597
    Par défaut
    En effet "cassé" n’apparaît pas. J'ai une belle page avec Erreur 500.

    J'ai mis le die() avant l'envois de la commande et il s'affiche bien. Je l'ai ensuite mis après la commande et j'ai une erreur 500.
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !


    Albert Einstein

  6. #6
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    note: le code 500 doit venir de votre parametrage apache

    essayez en remplaçant le die() par un exit()
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  7. #7
    Membre confirmé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 701
    Points : 597
    Points
    597
    Par défaut
    Bon bien tenté, mais ce n'est pas ça.

    En effet, je suis d'accord avec toi sur le fait que l'erreur 500 est du à la configuration du serveur. Puisque nous tentons d'intervenir dans le dossier /mkframeworkPackage/Lib/mkframeworkLib alors que ma configuration NGINX n'affiche sur le port http que le contenu du dossier /mkframeworkPackage/Projects/projetTruc/public.

    Pour le cas de ma gestion des produits à supprimer, je me suis débrouillé pour afficher le delete seulement si le nombre d'éléments associés à ce produit est égal à zéro. Mais cela ne va être bien plus compliqué, pour d'autre cas qui exploitent les contraintes.
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !


    Albert Einstein

Discussions similaires

  1. Réponses: 5
    Dernier message: 14/01/2013, 05h03
  2. Réponses: 7
    Dernier message: 29/11/2010, 17h34
  3. Réponses: 1
    Dernier message: 26/11/2010, 11h34
  4. [1.x] data-load après datadump : Integrity constraint violation
    Par rastaferraille dans le forum Symfony
    Réponses: 8
    Dernier message: 07/05/2010, 11h09
  5. [table corrompue] integrity constraints violation
    Par if_zen dans le forum Requêtes
    Réponses: 9
    Dernier message: 17/06/2009, 19h43

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