Tutorial :symfony : Problem 'Integrity constraint violation' with primary key



Question:

When I want to create a new object with one of my form, Doctrine take me an error :

Integrity constraint violation: 1062 Duplicate entry '0' for key 'PRIMARY'  

Creating worked previously, but I don't know what I have change to have an error now.

My schema for ID :

Logement:    connection: doctrine    actAs: [Timestampable]    tableName: logement    columns:      id:        type: integer(2)        unsigned: true        primary: true        autoincrement: true  

In my forms : BaseLogementForm.class.php

$this->setWidgets(array(               'id' => new sfWidgetFormInputHidden(),                ... other widgets);    $this->setValidators(array(               'id' => new sfValidatorCHoice(array('choices' => array($this->getObject()->get('id')), 'empty_value' => $this->getObject()->get('id'), 'required' => false)),               ... other validators);  

Edit :

I give you, my functions

public function executeNew(sfWebRequest $request){    // Retourne un formulaire pour la création d'un nouveau logement      $this->form = new logementForm();    }      public function executeCreate(sfWebRequest $request){    // Génére un formulaire pour la création d'un nouveau logement        $this->forward404Unless($request->isMethod(sfRequest::POST));        $this->form = new logementForm();        $this->processForm($request, $this->form);        // Affichage du formulaire dans le template "newSuccess"      $this->setTemplate('new');    }      protected function processForm(sfWebRequest $request, sfForm $form){    // Vérifie les données d'un formulaire et les enregistre dans la base        $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));        // On teste pour savoir dans quel cas on se situe : création/modification      // Si il s'agit d'une création :      if ($form->getObject()->isNew()) {          // Vérification de la validité des données entrées          if ($form->isValid()) {              // Si les données sont valides, enregistrement dans la base              $logement = $form->save();                 // On vérifie que l'enregistrement à bien eu lieu              if ($form->save()) {                  $this->getUser()->setFlash('notice', 'Création du logement effectuée');              }              else {                  $this->getUser()->setFlash('error', 'Erreur lors de la création du logement');              }                // Redirection vers la fiche du logement nouvellement créé              $this->redirect('logement/fiche?id='.$logement->getId());             }          // Sinon affichage d'un message d'erreur          else {              $this->getUser()->setFlash('error', 'Informations saisies non valides');          }      }  


Solution:1

Your type is integer(2), that's mean you only can have 100 elements in your table. I guess that in element 101, the db engine try to write 0 as id.


Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »