我正在使用 PostgreSql 9.2 我有很多角色,并且所有角色都已被授予对模式的 USAGE 特权。 当我尝试创建新用户并授予权限时,我收到一条错误消息:
创建角色 my_user;
GRANT USAGE 模式 my_schema 到 my_user;
错误:行太大:大小 8168,最大大小 8164
我已经阅读了很多关于如何修复它的文章,但那是一篇非常老的文章。 是否有任何新版本的 PostgreSql (9.6.8 +) 修复了此错误?
最佳答案
这是因为每个新权限都扩展了此架构的 pg_namespace
条目的 nspac
列。
现在 PostgreSQL 中的表 block 大小为 8kB,每个表行必须适合一个 block ,因此有限制。
在普通表中这不是问题,因为 PostgreSQL 在所谓的 TOAST 中存储变长“越界”的超大字段。表。但是系统目录没有 TOAST 表,所以这条逃生路线已经关闭。
我会说你遇到这个限制是因为设计不好。与其单独授予每个角色对架构的访问权限,不如使用角色层次结构,将您的许多角色分配给组并在组级别授予架构权限。
关于postgresql - 错误 : row is too big: size 8168, 最大尺寸 8164,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50016654/