Postgis+QGIS配置行级过滤策略后新增更新点位失败问题求助
问题解决方案
该报错的核心原因是仅配置了行级安全(RLS)过滤规则,缺少用户组的基础操作权限,管理员账号默认拥有全量权限所以操作不受影响,按以下步骤配置即可修复:
- 授予用户组Schema访问权限
GRANT USAGE ON SCHEMA public TO "GroupWork12";
- 授予用户组对应表的增删改查基础权限,行级安全策略仅在基础权限之上做数据过滤,无基础权限时策略不会生效
GRANT SELECT, INSERT, UPDATE, DELETE ON public."Table_Points_of_all_works" TO "GroupWork12";
- 授予表关联自增序列的使用权限,QGIS插入数据时需要调用序列生成主键值,无该权限会触发写入失败
首先查询表绑定的自增序列名(将语句中的gid替换为你表实际的主键字段名):
SELECT pg_get_serial_sequence('public."Table_Points_of_all_works"', 'gid');
拿到序列名后执行权限授予:
GRANT USAGE, SELECT ON SEQUENCE public."你的序列名" TO "GroupWork12";
- 可选优化:将表的
ID_WORK字段默认值设为12,避免QGIS插入时字段留空触发校验失败
ALTER TABLE public."Table_Points_of_all_works" ALTER COLUMN "ID_WORK" SET DEFAULT 12;
配置完成后可先使用GroupWork12账号在pgAdmin/psql中执行插入测试,确认无报错后重新在QGIS中加载图层即可正常写入。
内容的提问来源于stack exchange,提问作者Filippo Forlani
相关产品推荐
相关产品推荐

