我刚刚开始开发一个项目,并且正在使用 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/