php - 警告 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));
我可以看到由于数据太大,无法为该记录创建索引,但这是否意味着数据也没有存储到数据库中?
解决方案
如果更新索引失败并导致错误,则整个操作将失败并撤消。表和索引总是一起修改。
由于索引条目必须适合一个 8kB 块,并且每个块有一些开销,并且 PostgreSQL 要求至少三个索引条目适合一个块,因此您最终会得到一个索引条目的长度限制,例如 2717。
有两种选择:
删除该索引
如果您需要相等搜索的索引,您可以创建一个“哈希索引”(
USING hash
);可以索引大值,因为它只存储哈希
推荐阅读
- c - 关于数组下标函数的使用
- sql - SQL 警告 INSERT INTO %%bmk%%
- elasticsearch - Elasticsearch 匹配查询不匹配带有撇号的文档
- python - 如何将日期转换为 Django 时区感知日期时间
- django - Django 管理样式损坏
- javascript - 将数据从一个异步函数传递到另一个的问题
- java - 使用过滤器实现 JAX-RS 身份验证会中断 OpenApi 端点
- python - Python:名称“变量”是本地和全局的
- node.js - Heroku - EmberJS - 部署失败(无法下载节点)
- excel - 如果一个组合框被更改,则重置另一个组合框