Не удалось получить идентификатор последней вставки - Doctrine с представлениями mysql - PullRequest
2 голосов
/ 12 февраля 2011

У меня есть одна таблица и одно представление (создать представление как select * from table). Я использую php, mysql и doctrine 1.2 ORM.

Если я вставляю данные в таблицу, все работает должным образом, но когда я пытаюсь вставить данные в представление, я получаю следующую ошибку:

Couldn't get last insert identifier. 

Есть идеи, как это исправить? (Мне действительно нужно использовать представления, поэтому вставка в основную таблицу не будет в порядке)

Вся ошибка:

Неустранимая ошибка: необработанное исключение Doctrine_Connection_Exception с сообщение 'Не удалось получить последнюю вставку идентификатор.' в C: \ WAMP \ WWW \ WWW \ класс \ Lib \ doctrine_1.2 \ Lib \ Doctrine \ Подключение \ UnitOfWork.php: +941 Трассировки стека: C: \ WAMP \ WWW \ bicikel-WWW \ класс \ Lib \ doctrine_1.2 \ Lib \ Doctrine \ Подключение \ UnitOfWork.php (636): Doctrine_Connection_UnitOfWork -> _ assignIdentifier (Object (Event)) C: \ WAMP \ WWW \ WWW \ класс \ Lib \ doctrine_1.2 \ Lib \ Doctrine \ Подключение \ UnitOfWork.php (566): Doctrine_Connection_UnitOfWork-> processSingleInsert (Object (Event)) C: \ WAMP \ WWW \ \ WWW класса \ Lib \ doctrine_1.2 \ Lib \ Учение \ Подключение \ UnitOfWork.php (81): Doctrine_Connection_UnitOfWork-> вставки (Object (Event)) C: \ WAMP \ WWW \ WWW \ класс \ Lib \ doctrine_1.2 \ Lib \ Doctrine \ Record.php (1705): Doctrine_Connection_UnitOfWork-> saveGraph (Object (Event)) C: \ WAMP \ WWW \ WWW \ opravila \ migajznami_spider.php (97): Doctrine_Record-> save () {основной} брошенный в C: \ WAMP \ WWW \ WWW \ класс \ Lib \ doctrine_1.2 \ Lib \ Doctrine \ Подключение \ UnitOfWork.php по линии 941

Ответы [ 2 ]

2 голосов
/ 09 марта 2012

Может быть, у вас нет первичного ключа с автоинкрементом.Доктрина ищет автоинкрементную собственность.

1 голос
/ 13 февраля 2011

Я обновил файлы Doctrine, и теперь он работает.

Я изменил файл: Doctrine \ Connection \ UnitOfWork.php, строка 936 Я добавил некоторый код в блок else:

} else {
    $id = $record->$identifier;
    if(!$id){    // added
    $id = $this->conn->sequence->lastInsertId();    // added
    } // added
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...