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

时间:2013-03-02 07:48:33

标签: php postgresql zend-framework

在zend中,我为特定模块创建了mapper和model。我正在尝试将数据从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()中的参数计数(字符)超过60.这是我面临的问题。即我无法在此表中插入数据,因为此参数在计数(字符)

中超过60

我收到的错误是“主键无法生成”。

仅当nextval()内的字符超过60

时才会出现此问题

1 个答案:

答案 0 :(得分:1)

postgres系统使用不超过63个字节的标识符;较长的名称可以用命令编写,但它们会被截断。请查看本手册SQL-SYNTAX-IDENTIFIERS

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

在这种情况下,最好更改table nameprimary key column name更短,因为在zend中硬编码通过连接tableName + columnName +来创建序列...您可以在此处查看代码{ {1}}函数/Zend/Db/Adapter/Pdo/Pgsql.php

编辑:
这个SO post

还有另一个建议