2010-04-12 16 views
6

Quando provo a salvare i dati al mio modello Doctrine genera questa eccezione:Dottrina Problema: Impossibile ottenere identificatore ultimo inserto

Message: Couldn't get last insert identifier. 

Il mio tavolo codice di impostazione è:

$this->hasColumn('id', 'integer', 4, array(
     'type' => 'integer', 
     'length' => 4, 
     'fixed' => false, 
     'unsigned' => false, 
     'primary' => true, 
     'autoincrement' => true, 
     )); 

prega di aiuto. Grazie.

risposta

14

Controllare per assicurarsi che la colonna nel tuo database è impostato come auto_increment. Sembra che la classe Doctrine la gestisca come auto_increment ma non è impostata come tale nel DB.

+2

Vorrei poter sopravvivere questo più volte di uno. Hai appena fatto un bug gnarly avere una correzione di 10 minuti. –

1

Questo ha funzionato per me:

$this->hasColumn('cd_fabricante', 'integer', 4, array(
      'type' => 'integer', 
      'length' => 4, 
      'unsigned' => true, 
      'primary' => true, 
      'auto_increment' => true, 
)); 

Aveva gli stessi parametri come in precedenza, lo stesso errore anche.

EDIT: Recentemente ho trovato di aggiungere "auto_increment" per la definizione di colonna PK e ora si comporta come qualsiasi dato campo ID gestite da Doctrine, con qualsiasi nome scelgo

2

Per me, il problema era il parametro default.

 $this->hasColumn('inscription_id', 'integer', 4, array(
     'type' => 'integer', 
     'length' => 4, 
     'fixed' => false, 
     'unsigned' => false, 
     'primary' => true, 
//  'default' => '0', !!! get "couldn't get last inserted identifier doctrine" 
     'notnull' => true, 
     'autoincrement' => true, 
     ));