全部,
我犯了一个致命的错误,不小心运行了 postgresql 的核心安装程序,而不是 stackinstaller。我没有一路完成安装过程,但它仍然设置了一些阻止它现在启动的东西。这是一个生产数据库,我真的需要了解如何解决这个问题。
我在 Windows 2008R2 服务器上运行 9.2。
全部,
我犯了一个致命的错误,不小心运行了 postgresql 的核心安装程序,而不是 stackinstaller。我没有一路完成安装过程,但它仍然设置了一些阻止它现在启动的东西。这是一个生产数据库,我真的需要了解如何解决这个问题。
我在 Windows 2008R2 服务器上运行 9.2。
抱歉,我还没有足够的代表参与评论,但我在 Linux 和 Windows 上经常使用 PostgreSQL。
前几天我遇到了同样的问题。我运行了 9.1.7 安装程序,它破坏了我的集群。正如 Mike Christensen 所说,关键是在命令窗口中运行 pg_ctl START 以获得有用的错误消息。
我从“服务”面板获得了要使用的命令。当您查看集群定义的属性时,您会看到 pg_ctl 命令来启动服务。复制该命令并将其粘贴到命令窗口中,然后将“runservice”参数更改为“start”,并使用
runas.exe
以postgres
用户(9.1 及更低版本)或LOCALSERVICE
帐户(更高版本)启动命令。它应该已经包含集群数据目录的路径。这是我的样子:
检查您从该命令获得的错误消息,并检查数据库日志。
就我而言,我有两个问题。首先,我无法让安装程序工作,直到我在 postgres 本地管理员帐户下运行它。但是当我这样做时,我的域帐户不再具有特权。我不得不重新授予自己对 PostgreSQL 目录树的完全控制权。(编辑 CR:不要乱用 PostgreSQL 数据目录的权限,除非您确切知道自己在做什么,否则您可能会使任何问题变得更糟而不是更好。)
然后我尝试再次启动它并收到一条不同的消息,表明端口 5432 已在使用中。事实证明这是真的。不知何故,安装程序在端口 5432 上打开了一个孤立的 postgres.exe 进程,即使“服务”面板显示该服务未启动。
我不得不用它
netstat -ano
来查找 PID 并从任务管理器中杀死孤儿。然后一切正常开始。希望有帮助。
布赖恩
如果您在运行 9.2 DB 的主机上运行 9.2 安装程序,然后在中途取消它,那么您最好的选择可能是再次运行它并让它完成。安装程序用于升级和全新安装,它永远不会删除或弄乱现有的数据目录,所以这是非常安全的。尽管如此,您应该停止 PostgreSQL 服务(如果它正在运行),
services.msc
然后在尝试解决问题之前获取数据库的文件系统级副本。备份并运行后,请确保您有一个良好的备份机制。
全部,
每个人的反馈都很棒!事实证明,我的一位同事将 maintenance_work_mem 设置为超出了应有的范围。当安装程序上周五运行时,它强制数据库重新启动,这引发了错误。直到我完成了这些步骤,我才能够弄清楚问题所在。这是我自己的小启示录!〜一个