无法获得最后一个插入标识符 - 带有 mysql 视图的学说
Posted
技术标签:
【中文标题】无法获得最后一个插入标识符 - 带有 mysql 视图的学说【英文标题】:Couldn't get last insert identifier - Doctrine with mysql views 【发布时间】:2011-02-12 01:14:00 【问题描述】:我有一个表和一个视图(创建视图作为 select * from table)。我正在使用 php、mysql 和教义 1.2 ORM。
如果我在表中插入数据,一切都按预期工作,但是当我尝试将数据插入视图时,我收到以下错误:
Couldn't get last insert identifier.
知道如何解决这个问题吗? (我确实需要使用视图,所以插入主表是不行的)
整个错误:
致命错误:未捕获的异常 'Doctrine_Connection_Exception' 与 消息'无法获得最后插入 标识符。在 C:\wamp\www\www\class\lib\doctrine_1.2\lib\Doctrine\Connection\UnitOfWork.php:941 堆栈跟踪: C:\wamp\www\bicikel-www\class\lib\doctrine_1.2\lib\Doctrine\Connection\UnitOfWork.php(636): Doctrine_Connection_UnitOfWork->_assignIdentifier(对象(事件)) C:\wamp\www\www\class\lib\doctrine_1.2\lib\Doctrine\Connection\UnitOfWork.php(566): Doctrine_Connection_UnitOfWork->processSingleInsert(对象(事件)) C:\wamp\www\www\class\lib\doctrine_1.2\lib\Doctrine\Connection\UnitOfWork.php(81): Doctrine_Connection_UnitOfWork->插入(对象(事件)) C:\wamp\www\www\class\lib\doctrine_1.2\lib\Doctrine\Record.php(1705): Doctrine_Connection_UnitOfWork->saveGraph(对象(事件)) C:\wamp\www\www\opravila\migajznami_spider.php(97): Doctrine_Record->save() main 抛出 在 C:\wamp\www\www\class\lib\doctrine_1.2\lib\Doctrine\Connection\UnitOfWork.php 在第 941 行
【问题讨论】:
【参考方案1】:可能是您没有使用 autoincrement 的主键。 Doctrine 正在寻找 autoincrement 属性。
【讨论】:
【参考方案2】:我已经更新了 Doctrine 文件,现在可以使用了。
我更改了文件:Doctrine\Connection\UnitOfWork.php,第 936 行我在 else 块中添加了一些代码:
else
$id = $record->$identifier;
if(!$id) // added
$id = $this->conn->sequence->lastInsertId(); // added
// added
【讨论】:
以上是关于无法获得最后一个插入标识符 - 带有 mysql 视图的学说的主要内容,如果未能解决你的问题,请参考以下文章