我正在使用 PostgreSql 9.2
我有很多角色,并且所有角色都被授予了模式的 USAGE 权限。
当我尝试创建新用户并授予权限时,我收到错误:
CREATE ROLE my_user;
GRANT USAGE on schema my_schema to my_user;
ERROR: row is too big: size 8168, maximum size 8164
我读过很多关于如何修复它的文章,但这是一篇非常旧的文章。
是否有任何新版本的 PostgreSql (9.6.8 +) 修复了此错误?
这是因为每个新权限都会扩展nspacl
的栏目pg_namespace
此模式的条目。
现在 PostgreSQL 中的表块大小为 8kB,每个表行必须适合一个块,因此存在限制。
在普通表中,这不会成为问题,因为 PostgreSQL 将可变长度的超大字段存储在所谓的“不合规矩”中。TOAST https://www.postgresql.org/docs/current/static/storage-toast.html表。但是系统目录没有 TOAST 表,所以这条逃生路线是封闭的。
我想说的是,由于糟糕的设计,你遇到了这个限制。不要单独授予每个角色对架构的访问权限,而是使用角色层次结构,将多个角色分配给组并在组级别授予架构权限。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)