【问题标题】:Couldn't get last insert identifier - Doctrine with mysql views无法获得最后一个插入标识符 - 带有 mysql 视图的学说
【发布时间】: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 行

【问题讨论】:

    标签: php mysql doctrine


    【解决方案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
      }
      

      【讨论】:

        猜你喜欢
        • 2011-02-06
        • 1970-01-01
        • 2011-06-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-31
        • 1970-01-01
        • 1970-01-01
        • 2017-11-22
        相关资源
        最近更新 更多