最后,我为特定模块创建了映射器和模型。我试图保存数据到一个表从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 name
或primary key column name
更改得更短,因为在zend中,它是硬编码的,通过连接tableName+columnName+…您可以在这里看到代码/Zend/Db/Adapter/Pdo/Pgsql.php
函数lastInsertId
这篇文章中还有一个建议