【问题标题】:How do I change the maintenance database for Postgres?如何更改 Postgres 的维护数据库?
【发布时间】:2011-08-07 10:42:53
【问题描述】:

我在 OSX 版本 10.6.6 上运行 PostgreSQL 版本 9.0。不知何故,我的一个开发数据库变成了维护数据库,而不是 postgres(这个数据库也存在)。我找不到任何关于如何将维护数据库更改/设置回 postgres 的文档。

由于这个问题,我无法删除我的开发数据库...

【问题讨论】:

  • 我相信维护数据库是与您的 os 用户同名的数据库,至少它在 windows 和 linux 中是这样工作的,尝试使用其他用户登录,然后连接到 postgres。跨度>
  • Postgres 中没有“维护数据库”之类的东西
  • 当我登录 pgAdmin 并尝试删除数据库时,我收到错误消息:“不允许删除数据库。无法删除维护数据库。”有问题的数据库不是 postgres,而是我为测试创建的另一个数据库。
  • @a_horse_with_no_name 这在技术上可能是正确的,但实际上并非如此。或者至少如果您使用 pgadmin ,实际上它是不正确的。被 pgadmin 指定为“维护 db”的 db 对于 pgadmin 的功能非常重要。 pgadmin 一直使用它。
  • @BillR:所以它是一个 pgAdmin 特定的数据库。我几乎从不使用 pgAdmin,所以我从来没有注意到它显然有这个特殊要求。

标签: database postgresql maintenance pgadmin


【解决方案1】:

您可以从pgAdmin 更改维护数据库,但您必须断开与数据库引擎的连接才能执行此操作。

第一次断开连接:

然后在数据库服务器属性中:

选择所需的维护数据库:

【讨论】:

    【解决方案2】:

    命令行选项是:

    psql -U intelison -c "UPDATE pg_database SET datistemplate=false, datallowconn=true WHERE datname = '<your_database_name>'"
    

    【讨论】:

    • 谢谢。我正在寻找命令行选项。我可以请你解释一下这个命令的组成部分是什么意思吗?
    【解决方案3】:

    Maintenance db 字段是只读的,你不能改变它。所以你应该把你的服务器属性保存在某个地方,并使用这些属性创建新的服务器并设置维护 db “postgres”。现在您可以删除数据库了。

    【讨论】:

      【解决方案4】:

      您对此并不完全清楚,但您的意思是 pgAdmin III 中的“维护数据库”选择吗?

      在“对象浏览器”窗格中选择服务器;右键 -> 属性

      第五个字段是“维护数据库”

      【讨论】:

      • 是的,我一直在尝试通过 pgAdmin 删除数据库(根据我上面的评论)。不幸的是,“维护数据库”属性是只读的。
      • 解决了这个问题。我能够使用 rake (rake db:drop) 删除数据库。当我打开 pgAdmin 时,我被告知维护数据库不存在。然后我可以按照 intgr 的描述更新“维护数据库”选择(它以前是只读的)
      • @gsiener:“维护数据库”属性从不只读。除了从建议的值中选择之外,您还可以随时输入任何数据库名称。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-02
      • 2015-11-06
      相关资源
      最近更新 更多