我通过添加找到了一些解决方案
allow_system_table_mods = on
到 PostgreSQL 配置文件。
但在 PostgreSQL 上这不起作用。我找不到任何其他方法可以让我编辑它catalogs
。
有人有想法吗?
答案1
我刚刚从源代码并且以超级用户身份编辑系统目录没有任何问题。它rolcatupdate
由pg_roles
系统目录:
角色可以直接更新系统目录。(除非此列为真,否则即使是超级用户也不能这样做。)
您可以通过以下方式检查:
SELECT rolcatupdate FROM pg_roles WHERE rolname LIKE 'postgres';
rolcatupdate
--------------
t
(1 row)
对于其他角色,您有价值false
,因此您可以(可能您根本不应该这样做,所以要小心)设置为true
:
UPDATE pg_roles SET rolcatupdate = true WHERE rolname LIKE 'roleName'
第二种方法(假设你在某些事故后没有任何超级用户帐户)是在单用户模式:
当运行独立服务器时,会话用户将被设置为 ID 为 1 的用户。此用户实际上不必存在,因此可以使用独立服务器手动恢复某些类型的系统目录意外损坏。隐含的超级用户权限 被授予独立模式下ID为1的用户。