在pgAdmin

时间:2018-06-03 21:33:05

标签: postgresql pgadmin

为了更改PostgreSQL数据库模板的整理,我删除了template1并使用'正确的'重新创建了它。排序规则。因此,我从这个question得到了灵感。

现在一切正常,但现在新数据库模板template1列在树视图的可用数据库中。 我比较了两个服务器的数据库pg_database(一个列出了数据库template1,一个没有),但数据库template1的参数值是相同的。

我想在树视图中隐藏此数据库。 有谁可以解决这个问题?

编辑:this one没有给我任何进一步的信息

(PostgreSQL 9.6,pgAdmin 1.22)

1 个答案:

答案 0 :(得分:0)

PgAdmin使用following condition在树中显示数据库:

/* Condition used to show database */
if (settings->GetShowSystemObjects() || !database->GetSystemObject())
    (...)

/* Function called above */
bool pgDatabase::GetSystemObject() const
{
    if (server)
    {
        if (this->GetName() == wxT("template0")) return true;
        return (this->GetOid() <= server->GetLastSystemOID());
    }
    else
    {
        return false;
    }
}

除非您在树视图中标记了&#34;显示系统对象&#34;选项,我猜你的template1的oid大于LastSystemOID(pg_database.datlastsysoid)。在这种情况下,您有三个选择:

  1. 使用正确的排序规则重建群集;
  2. 接受;
  3. 或者,假设你还没有参加制作,那就玩吧 pg_database.datlastsysoid并等待副作用。