Проблема доктрины: не удалось получить идентификатор последней вставки - PullRequest
6 голосов
/ 12 апреля 2010

Когда я пытаюсь сохранить данные в моей модели, Doctrine выдает это исключение:

Message: Couldn't get last insert identifier. 

Код установки моей таблицы:

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

Пожалуйста, помогите. Спасибо.

Ответы [ 3 ]

15 голосов
/ 07 июля 2010

Убедитесь, что столбец в вашей базе данных установлен как auto_increment. Похоже, класс Doctrine обрабатывает его как auto_increment, но он не настроен как таковой в БД.

2 голосов
/ 09 ноября 2012

Для меня проблема заключалась в параметре 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,
         ));
1 голос
/ 18 апреля 2010

Это сработало для меня:

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

У вас были те же параметры, что и у вас, такая же ошибка тоже.

РЕДАКТИРОВАТЬ: я недавно обнаружил, что добавление «auto_increment» в определение столбца PK, и теперь я веду себя так же, как любое поле идентификатора обрабатывается Doctrine с любым именем, которое я выберу

...