我们最近将 Postgres 从 v10 升级到了 v12。pg_stats_database 列出了一个值为空的“datname”列。我愚蠢地删除了该视图,希望重新创建它。
当我尝试重新创建视图时,我收到“当前不允许修改系统目录”错误。我现在担心这样做弊大于利。
- 重新创建“pg_stats_database”视图的最佳方法是什么?
- 是什么原因导致该视图中出现“空”数据名称?当然所有数据库都需要名称吗?
答案1
重新创建“pg_stats_database”视图的最佳方法是什么?
放允许系统表修改并重新on
启动postgresql.conf
实例。在模式中创建视图pg_catalog
,然后出于安全考虑将参数切换为默认值off
并再次重新启动。
是什么原因导致该视图中出现“空”数据名称?当然所有数据库都需要名称吗?
从 PostgreSQL 12 开始,此视图有一行,datid=0
其中包含跨数据库共享的对象和一个空数据名。请参阅pg_stat_database
在 v12 文档中。