php - postgresql 与lastinsertid 和zend 框架的序列问题

标签 php database zend-framework postgresql

我刚刚开始开发一个项目,并且正在使用 zend 框架和 postgresql(通常使用 MySQL),但是当我尝试使用 Zend_Db 插入命令获取最后插入的 id 时遇到问题。

使用函数 $db->lastinsertid('users', 'userid'); 时,我收到以下错误消息:

SQLSTATE[42P01]: Undefined table: 7 ERROR: relation "users_userid_seq" does not exist LINE 1: SELECT CURRVAL('users_userid_seq') ^

我已检查数据库并且序列确实存在,并且表和序列均由用于访问应用程序的同一用户拥有。

我什至尝试过 $db->lastSequenceId('users_userid_seq'); 但仍然收到相同的错误消息。

我不确定问题是出在 postgresql (我认为最有可能)还是框架上。

还有其他人遇到过类似的问题吗?

最佳答案

我看到您找到了答案,这只是一个打印错误。

FWIW,我将提供以下建议作为您看到错误的另一个原因:

您需要准确拼写存储的序列名称,如果序列名称存储为小写以外的任何名称,则包括匹配大小写。

换句话说,如果序列是使用拼写“Users_userid_seq”创建的,但您将其查询为“users_userid_seq”,则这不匹配,并且您'将得到错误。

尝试在 psql 工具中列出序列:

postgres=# \ds

这将向您显示定义的序列及其存储在数据库中的拼写。

关于php - postgresql 与lastinsertid 和zend 框架的序列问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/691737/

相关文章:

php - Zend Framework 2,教程中的 "resolves to invalid controller class or alias"博客模块

javascript - Order By (alias) then Order by second sequelize

php - 排序不适用于 PHP SQL ORDER BY

php - 使用 UTF-8 时某些字符无法显示

php - 在 php 中上传的文件没有返回函数

java - 插入按钮连接

mysql - 在mysql中为数据库中的每个表自动运行查询

php - Zend : How to log PHP errors

php - 无法在我的 .phtml 文件中显示 Zend 表单

php - 通过 URL 传递变量信息的替代方法