如何解决Postgrest查询数据记录时出现的配置参数无效报错
报错根因
- 该错误由PostgreSQL 14 与 PostgREST 8.0.0 的版本不兼容导致:
- PostgreSQL 14 收紧了自定义配置参数(GUC)的命名校验规则,要求自定义参数的前缀必须是符合规范的标识符,
request.header前缀不符合该校验要求 - PostgREST 8.0.0 版本会自动将请求头以
request.header.*格式的自定义参数透传给PostgreSQL,直接触发了PG14的参数校验拦截
- PostgreSQL 14 收紧了自定义配置参数(GUC)的命名校验规则,要求自定义参数的前缀必须是符合规范的标识符,
解决方案
可根据你的实际场景选择任意一种适配方案:
方案1:升级PostgREST版本(优先推荐)
将PostgREST升级到 v9.0.0 及以上版本即可。该版本已针对PostgreSQL 14的校验规则完成适配,会自动调整透传参数的命名格式,无需额外修改其他配置。
方案2:关闭PostgREST请求头透传
如果暂时无法升级PostgREST,可通过配置关闭请求头透传功能规避校验:
- 打开你的PostgREST配置文件,添加/修改配置项:
server.headers = []
- 重启PostgREST服务后生效。该配置会禁止PostgREST将请求头作为自定义参数透传给PostgreSQL,不会触发参数校验。
方案3:调整PostgreSQL参数校验规则
如果需要保留请求头透传能力,可修改PostgreSQL配置放行对应前缀的参数:
- 打开PostgreSQL的
postgresql.conf配置文件,添加配置项:
guc_allow_list = 'request.header.*'
- 重启PostgreSQL服务后生效。该配置会允许所有
request.header开头的自定义参数通过校验。
内容的提问来源于stack exchange,提问作者Madhu Mohan Gude
相关产品推荐
相关产品推荐

