0

在 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 时才会出现此问题

4

1 回答 1

1

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

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

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

编辑:这个SO 帖子
中还有另一个建议

于 2013-03-02T09:08:14.043 回答