pg_restore: [archiver (db)] 设置行安全性为关闭。

7

我刚刚在Windows上安装了一个新的PostgreSQL 9.5服务器。

当我尝试还原数据库时出现错误消息。

pg_restore:[archiver(db)]初始化时出错:pg_restore:   [archiver(db)]无法执行查询:ERROR:未识别配置参数“row_security”      Command was:SET row_security = off;

这是什么原因?


我的猜测是,你的pg_restore可执行文件实际上来自于你之前的安装。 - e4c5
2个回答

9

row_security 配置设置是9.5版新功能,该错误提示表明您正在将9.5版数据库的备份恢复到旧版本的PostgreSQL中,这种组合不受支持,因为新功能无法与旧服务器一起使用。

在本地数据库上开发并部署到远程数据库时,开发应该在与远程数据库相同的主要版本上进行
在10版之前,Postgres 使用X.Y.Z约定,其中X.Y是主要版本,Z是仅向X.Y添加错误修复的小版本。
从10版本开始,它是X.Z,其中X是主要版本,Z是修订号。


3
即使转储文件本身是旧版本的,但使用更新版本的pg_restore时仍会发生此情况。 - lawrence
数据看起来已经成功恢复,但是每个数据库在还原时都会引发错误消息。如果我忽略与行安全性相关的错误,是否会有任何影响? - Spike
1
@Spike:如果被忽略的错误仅包括 SET row_security = off;,那么这意味着目标数据库不支持该功能,这是无害的。如果源数据库积极使用此功能,则会出现与策略创建相关的其他错误。 - Daniel Vérité

3

我在一台新的Windows 10桌面电脑上使用pgAdmin3编辑运行Postgres 9.3的服务器。使用pgAdmin3 v1.22.1时出现了“行安全性错误”。我重新安装了pgAdmin3 v1.20.2,错误不再出现。


真是个救命稻草啊。基本上,BigSQL的pgadmin似乎不喜欢这个security_row标志,但旧版本的pgadmin倒是不会介意。 - Vael Victus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接