无法获取最后一个插入标识符 - 带有mysql视图的Doctrine

时间:2011-02-12 01:14:01

标签: php mysql doctrine

我有一个表和一个视图(从表中创建视图select *)。我正在使用php,mysql和doctrine 1.2 ORM。

如果我在表中插入数据,一切都按预期工作,但当我尝试将数据插入视图时,我收到以下错误:

Couldn't get last insert identifier. 

知道怎么解决这个问题吗? (我真的需要使用视图,因此插入主表不行)

整个错误:

  

致命错误:未捕获的异常   'Doctrine_Connection_Exception'用   消息'无法获得最后一次插入   识别符“。在   C:\瓦帕\ WWW \ WWW \类\ lib中\ doctrine_1.2 \ lib中\学说\连接\ UnitOfWork.php:941   堆栈跟踪:   C:\瓦帕\ WWW \ bicikel-WWW \类\ lib中\ doctrine_1.2 \ lib中\学说\连接\ UnitOfWork.php(636):   Doctrine_Connection_UnitOfWork-> _assignIdentifier(对象(事件))   C:\瓦帕\ WWW \ WWW \类\ lib中\ doctrine_1.2 \ lib中\学说\连接\ UnitOfWork.php(566):   Doctrine_Connection_UnitOfWork-> processSingleInsert(对象(事件))   C:\瓦帕\ WWW \ WWW \类\ lib中\ doctrine_1.2 \ lib中\学说\连接\ UnitOfWork.php(81):   Doctrine_Connection_UnitOfWork->插入(对象(事件))   C:\瓦帕\ WWW \ WWW \类\ lib中\ doctrine_1.2 \ lib中\学说\ Record.php(1705):   Doctrine_Connection_UnitOfWork-> saveGraph(对象(事件))   C:\瓦帕\ WWW \ WWW \ opravila \ migajznami_spider.php(97):   Doctrine_Record-> save(){main}抛出   在   C:\瓦帕\ WWW \ WWW \类\ lib中\ doctrine_1.2 \ lib中\学说\连接\ UnitOfWork.php   在第941行

2 个答案:

答案 0 :(得分:2)

可能你没有自动增量的主键。学说正在寻找自动增量属性。

答案 1 :(得分:1)

我更新了Doctrine文件,现在可以使用。

我更改了文件:Doctrine \ Connection \ UnitOfWork.php,第936行我在else块中添加了一些代码:

} else {
    $id = $record->$identifier;
    if(!$id){    // added
    $id = $this->conn->sequence->lastInsertId();    // added
    } // added
}
相关问题