首页 > 解决方案 > 警告 pg_execute():查询失败:错误:索引行大小 2728 超出索引“index_name”的最大值 2717

问题描述

新使用 PHP 和 PG 函数。请帮忙。

我收到以下警告

警告 pg_execute():查询失败:错误:索引行大小 2728 超过索引“index_name”的最大值 2717。

不知道这意味着什么。

代码示例:

$query      = pg_prepare($pgConn, "query", "UPDATE table_name SET field_name=array_cat(field_name, $1) WHERE id=$2;");
$query      = pg_execute($pgConn, "query", array($param1, $param2));

我可以看到由于数据太大,无法为该记录创建索引,但这是否意味着数据也没有存储到数据库中?

标签: phppostgresql

解决方案


如果更新索引失败并导致错误,则整个操作将失败并撤消。表和索引总是一起修改。

由于索引条目必须适合一个 8kB 块,并且每个块有一些开销,并且 PostgreSQL 要求至少三个索引条目适合一个块,因此您最终会得到一个索引条目的长度限制,例如 2717。

有两种选择:

  • 删除该索引

  • 如果您需要相等搜索的索引,您可以创建一个“哈希索引”(USING hash);可以索引大值,因为它只存储哈希


推荐阅读