如何在 Postgres 中重新创建 pg_stats_database

如何在 Postgres 中重新创建 pg_stats_database

我们最近将 Postgres 从 v10 升级到了 v12。pg_stats_database 列出了一个值为空的“datname”列。我愚蠢地删除了该视图,希望重新创建它。

当我尝试重新创建视图时,我收到“当前不允许修改系统目录”错误。我现在担心这样做弊大于利。

  1. 重新创建“pg_stats_database”视图的最佳方法是什么?
  2. 是什么原因导致该视图中出现“空”数据名称?当然所有数据库都需要名称吗?

答案1

重新创建“pg_stats_database”视图的最佳方法是什么?

允许系统表修改并重新on启动postgresql.conf实例。在模式中创建视图pg_catalog,然后出于安全考虑将参数切换为默认值off并再次重新启动。

是什么原因导致该视图中出现“空”数据名称?当然所有数据库都需要名称吗?

从 PostgreSQL 12 开始,此视图有一行,datid=0其中包含跨数据库共享的对象和一个空数据名。请参阅pg_stat_database在 v12 文档中。

相关内容