当使用postgres和zend时,nextval参数不接受超过60个字符


The nextval param is not accepting more than 60 characters while usinng postgres and zend

最后,我为特定模块创建了映射器和模型。我试图保存数据到一个表从zend控制器文件

我使用postgresql作为数据库。我已经设置了一个表,主键为自动递增

表名和对应的主键如下:

tbl_user_group_business_prmission       --table
pk_bint_user_group_business_prmission_id   --primary key

主键生成方法如下

 nextval('tbl_user_group_business_prmission_pk_bint_user_group_business_prmission_id_seq'::regclass)

可以看到nextval()中的参数在count(character)中大于60。这就是我所面临的问题。例如,我无法向该表插入数据,因为该参数的计数(字符)超过60

我得到的错误类似于"主键不生成"。

只有当nextval()中的字符超过60时才会出现这个问题

postgres系统使用的标识符不超过63个字节;较长的名称可以写入命令中,但它们将被截断。请查看此手册sql -语法-标识符。

但是您可以通过创建自定义CREATE SEQUENCE或通过phppgadmin或pgAdmin接口来更新序列的名称。

在这种情况下,最好将table nameprimary key column name更改得更短,因为在zend中,它是硬编码的,通过连接tableName+columnName+…您可以在这里看到代码/Zend/Db/Adapter/Pdo/Pgsql.php函数lastInsertId

编辑:


这篇文章中还有一个建议