无法获得最后一个插入标识符 - 带有 mysql 视图的学说

Posted

技术标签:

【中文标题】无法获得最后一个插入标识符 - 带有 mysql 视图的学说【英文标题】:Couldn't get last insert identifier - Doctrine with mysql views 【发布时间】:2011-02-12 01:14:00 【问题描述】:

我有一个表和一个视图(创建视图作为 select * from table)。我正在使用 phpmysql 和教义 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 视图的学说的主要内容,如果未能解决你的问题,请参考以下文章

MySQL - 带有更新和插入的过程中最后一次选择的输出

SQLServer系统变量使用

我无法在 laravel 7 项目中获得最后一个插入 ID

php PDO - 如何获取最后插入的ID?

为啥我无法在 PHP 和 MySQL 中获取最后一个插入 ID?

带有Python的Mysql无法插入具有自动增量ID的记录,为啥?