错误:行太大:大小8168,最大大小8164

时间:2018-04-25 07:42:54

标签: postgresql

我正在使用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 +)修复了这个错误?

1 个答案:

答案 0 :(得分:1)

这是因为每个新权限都会扩展此架构的nspacl条目的pg_namespace列。

现在PostgreSQL中的表块大小为8kB,每个表行必须适合一个块,因此限制。

在普通表中不会出现问题,因为PostgreSQL在所谓的TOAST表中存储了可变长度的“超出行”的超大字段。但系统目录没有TOAST表,因此该转义路径已关闭。

我会说你因为设计不好而遇到了这个限制。不是单独授予每个角色对模式的访问权限,而是使用角色层次结构,将多个角色分配给组,并在组级别授予模式权限。

相关问题