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

Symfony PHP Discussion :

SQLSTATE[23505]: Unique violation: 7 ERREUR: la valeur d'une clé dupliquée rompt la contrainte unique


Sujet :

Symfony PHP

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 394
    Points : 347
    Points
    347
    Par défaut SQLSTATE[23505]: Unique violation: 7 ERREUR: la valeur d'une clé dupliquée rompt la contrainte unique
    Bonjour !!

    J'ai un soucis, un formulaire qui est suivant :

    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
     
     
    $builder
     
                ->add('title', 'text', array('label'=>'Titre : ',
                ))
                ->add('idApp','entity', 
                array('class'=>'App\SuisseBundle\Entity\SuisseApp', 'property'=>'title', 'label'=>'Application :'
                ))          
                ->add('idVue','entity',
                array('class'=>'App\SuisseBundle\Entity\SuisseVue', 'property'=>'title', 'label'=>'Vue :'
                 ))            
                ->add('idPoiTheme','entity',     
               array('class'=>'App\SuisseBundle\Entity\SuissePoiTheme', 'property'=>'title', 'label'=>'Theme :'
                 ));

    Lorsque j'appelle ce formulaire pour la création d'une nouvelle donnée et en validant le bouton j'ai l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    SQLSTATE[23505]: Unique violation: 7 ERREUR: la valeur d'une clé dupliquée rompt la contrainte unique « suisse_poi_pkey »
    et je constatais que la donnée n'a pas été ajouter a la bdd !!

    Merci pour votre réponse.

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    si le champs est unique c'est normale

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 394
    Points : 347
    Points
    347
    Par défaut
    Je ne comprends pas ta théorie, quoi donc, et quelle est donc le soucis ??

    Merci.

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    tu sais ce qu'est un index UNIQUE ?

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 394
    Points : 347
    Points
    347
    Par défaut
    c'est exactement comme un index primaire sauf qu'avec un index unique on peut créer des champs null a ma connaissance :S

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par aitiahcene Voir le message
    c'est exactement une index primaire sauf que avec un index unique ou peut créer des champs null a ma connaissance :S
    non, ca veut dire que dans ta base ce champs la sera unique, si tu met un index UNIQUE sur le login par exemple, tu pourras pas avoir deux utilisateur nommer : toto

  7. #7
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 394
    Points : 347
    Points
    347
    Par défaut
    Trés bien donc c'est "suisse_poi_pkey" qui pose problème !!

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par aitiahcene Voir le message
    Trés bien donc c'est "suisse_poi_pkey" qui pose problème !!
    oui, il est en index UNIQUE, ca correcpond a quel champs idPoiTheme ?

  9. #9
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 394
    Points : 347
    Points
    347
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    oui, il est en index UNIQUE, ca correcpond a quel champs idPoiTheme ?

    Ca correspond a l"'id" de "suissepoi" en fait c'est le champ "id" qui contient la clé primaire dans la table "suissepoi"

    Merci pour ton aide

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Apres seul toi connais ta base, quel était le besoin pour cet INDEX ?

  11. #11
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 394
    Points : 347
    Points
    347
    Par défaut
    c'est d'ajouter les champs suivant :
    Titre : saisie
    Vue : choix avec liste déroulante
    Theme : choix avec liste déroulante
    Application : choix avec liste déroulante

    la table est poi avec les champs:

    id : clé primaire
    titre : *
    id_vue: clé étrangère (id table vue) *
    id_poi_theme : clé étrangère (id table poi_theme) *
    id_app : clé étrangère (id table app) *

    * les 4 champs a ajouter

  12. #12
    Membre habitué Avatar de Avrel
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2010
    Messages : 118
    Points : 177
    Points
    177
    Par défaut
    Tu as peut être utilisé une relation OneToOne dans une entité au lieu d'une OneToMany

  13. #13
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 394
    Points : 347
    Points
    347
    Par défaut
    Non, la relation est ManyToOne !!

  14. #14
    Membre habitué Avatar de Avrel
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2010
    Messages : 118
    Points : 177
    Points
    177
    Par défaut
    Montre nous tes entités

  15. #15
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 394
    Points : 347
    Points
    347
    Par défaut
    Cette entity est liée avec les entités : par ManyToOne :
    SuisseApp : idApp
    SuissePoiTheme : idPoiTheme
    SuisseVue : idVue




    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
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
     
    <?php
     
    namespace App\SuisseBundle\Entity;
     
    use Doctrine\ORM\Mapping as ORM;
     
    /**
     * App\SuisseBundle\Entity\SuissePoi
     *
     * @ORM\Table(name="suisse_poi")
     * @ORM\Entity
     */
    class SuissePoi
    {
        /**
         * @var integer $id
         *
         * @ORM\Column(name="id", type="integer", nullable=false)
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="SEQUENCE")
         * @ORM\SequenceGenerator(sequenceName="suisse_poi_id_seq", allocationSize="1", initialValue="1")
         */
        private $id;
     
        /**
         * @var text $title
         *
         * @ORM\Column(name="title", type="text", nullable=true)
         */
        private $title;
     
        /**
         * @var geometry $geom
         *
         * @ORM\Column(name="geom", type="geometry", nullable=true)
         */
        private $geom;
     
        /**
         * @var SuisseVue
         *
         * @ORM\ManyToOne(targetEntity="SuisseVue")
         * @ORM\JoinColumns({
         *   @ORM\JoinColumn(name="id_vue", referencedColumnName="id")
         * })
         */
        private $idVue;
     
        /**
         * @var SuisseApp
         *
         * @ORM\ManyToOne(targetEntity="SuisseApp")
         * @ORM\JoinColumns({
         *   @ORM\JoinColumn(name="id_app", referencedColumnName="id")
         * })
         */
        private $idApp;
     
        /**
         * @var SuissePoiTheme
         *
         * @ORM\ManyToOne(targetEntity="SuissePoiTheme")
         * @ORM\JoinColumns({
         *   @ORM\JoinColumn(name="id_poi_theme", referencedColumnName="id")
         * })
         */
        private $idPoiTheme;
     
     
     
        /**
         * Get id
         *
         * @return integer 
         */
        public function getId()
        {
            return $this->id;
        }
     
        /**
         * Set title
         *
         * @param text $title
         */
        public function setTitle($title)
        {
            $this->title = $title;
        }
     
        /**
         * Get title
         *
         * @return text 
         */
        public function getTitle()
        {
            return $this->title;
        }
     
        /**
         * Set geom
         *
         * @param geometry $geom
         */
        public function setGeom($geom)
        {
            $this->geom = $geom;
        }
     
        /**
         * Get geom
         *
         * @return geometry 
         */
        public function getGeom()
        {
            return $this->geom;
        }
     
        /**
         * Set idVue
         *
         * @param App\SuisseBundle\Entity\SuisseVue $idVue
         */
        public function setIdVue(\App\SuisseBundle\Entity\SuisseVue $idVue)
        {
            $this->idVue = $idVue;
        }
     
        /**
         * Get idVue
         *
         * @return App\SuisseBundle\Entity\SuisseVue 
         */
        public function getIdVue()
        {
            return $this->idVue;
        }
     
        /**
         * Set idApp
         *
         * @param App\SuisseBundle\Entity\SuisseApp $idApp
         */
        public function setIdApp(\App\SuisseBundle\Entity\SuisseApp $idApp)
        {
            $this->idApp = $idApp;
        }
     
        /**
         * Get idApp
         *
         * @return App\SuisseBundle\Entity\SuisseApp 
         */
        public function getIdApp()
        {
            return $this->idApp;
        }
     
        /**
         * Set idPoiTheme
         *
         * @param App\SuisseBundle\Entity\SuissePoiTheme $idPoiTheme
         */
        public function setIdPoiTheme(\App\SuisseBundle\Entity\SuissePoiTheme $idPoiTheme)
        {
            $this->idPoiTheme = $idPoiTheme;
        }
     
        /**
         * Get idPoiTheme
         *
         * @return App\SuisseBundle\Entity\SuissePoiTheme 
         */
        public function getIdPoiTheme()
        {
            return $this->idPoiTheme;
        }
    }

  16. #16
    Membre habitué Avatar de Avrel
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2010
    Messages : 118
    Points : 177
    Points
    177
    Par défaut
    Question bete :

    Est-ce que ta base de donnée est bien a jour ? si tu as fait une modif sur tes entités et tes relations et que tu n'as pas mis a jour derrière ça peux peut être venir de là.

    Et petite remarque, pour ta relation tu as :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    @ORM\JoinColumns({
         @ORM\JoinColumn(name="id_vue", referencedColumnName="id")
    })
    tu peux remplacer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @ORM\JoinColumn(name="id_vue", referencedColumnName="id")
    Ça résoudra surement pas le problème mais ça allégera ton fichier

  17. #17
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 394
    Points : 347
    Points
    347
    Par défaut
    Merci pour l'info
    Pas autant que je sache :S elle est à jour la bdd, je faisais gaffe à ça. c'est Bizarre regarde :

    SQLSTATE[23505]: Unique violation: 7 ERREUR: la valeur d'une clé dupliquée rompt la contrainte unique « suisse_poi_pkey »

    Ca parle du id de SuissePoi qui possède la clé primaire :S "suisse_poi_pke" qui fait l'objet de 2 clés étrangère dans 2 tables :S

  18. #18
    Membre habitué Avatar de Avrel
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2010
    Messages : 118
    Points : 177
    Points
    177
    Par défaut
    Ha oui donc c'est même pas un problème avec tes relations, c'est la clé primaire de SuissePoi, donc son id, je eux voir le code que tu utilise pour l'inserer en base ?

    EDIT : Est-ce que tu as inséré des donnée manuellement dans ta base ?

  19. #19
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 394
    Points : 347
    Points
    347
    Par défaut
    Oui j’insère des données directement dans mon SGBDD et je les trouve dans SF2-Doctrine :S

  20. #20
    Membre habitué Avatar de Avrel
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2010
    Messages : 118
    Points : 177
    Points
    177
    Par défaut
    Alors du coup ca peut peut etre venir de la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    @ORM\GeneratedValue(strategy="SEQUENCE")
    @ORM\SequenceGenerator(sequenceName="suisse_poi_id_seq",
    allocationSize="1", initialValue="1")
    Avec Sequence il me semble que c'est doctrine qui gere l'auto incrément, donc si tu insère une donnée manuellement dans ta table, sa valeur d'auto incrément ne bouge pas du coup il essaye d’insérer un element a un id qui est deja utilisé, d'où l'erreur.
    Si c'est bien Doctrine qui gère l'auto increment (ce dont je ne suis pas sur) ca doit venir de là.

    Essaye soit de passer ta stratégie en auto, soit de n’insérer que des données via Doctrine.

Discussions similaires

  1. Erreur ajout valeur dans une table
    Par sharky1x dans le forum Oracle
    Réponses: 2
    Dernier message: 13/02/2009, 10h35
  2. radiobutton erreur n'est pas une valeur entière correcte
    Par pierrot67 dans le forum Bases de données
    Réponses: 3
    Dernier message: 12/03/2006, 21h27
  3. Réponses: 2
    Dernier message: 13/02/2006, 11h13
  4. [VB]erreur à la récupération d'une valeur d'un dictionnaire
    Par amelhog dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 07/02/2006, 12h06
  5. erreur '' n'est pas une valeur entière correcte
    Par ffxlenoir dans le forum Langage
    Réponses: 5
    Dernier message: 02/12/2005, 13h57

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