我尝试从 Windows 命令行启动 postgres 服务器但是它总是失败并出现相同的错误:
2015-04-14 10:25:19 GST LOG: could not bind IPv6 socket: No error
2015-04-14 10:25:19 GST HINT: Is another postmaster already running on port 5432? If not, wait a few seconds and retry.
2015-04-14 10:25:19 GST LOG: could not bind IPv4 socket: No error
2015-04-14 10:25:19 GST HINT: Is another postmaster already running on port 5432? If not, wait a few seconds and retry.
2015-04-14 10:25:19 GST WARNING: could not create listen socket for "*"
2015-04-14 10:25:19 GST FATAL: could not create any TCP/IP sockets
如果我尝试从 pgAdmin 连接到服务器,我就可以访问它。我没有在 5432 上运行任何其他服务,因为我已经检查了任务管理器中是否有在该端口上运行的应用程序。
我用来启动的命令是
pg_ctl start -D "C:\Program Files (x86)\PostgreSQL\9.4\data"
但我也尝试过
postgres -D "C:\Program Files (x86)\PostgreSQL\9.4\data"
我的 IPv6 设置设为动态 IP,而我的 v4 设置设为宽带调制解调器 IP。我还禁用了 Windows 防火墙和防病毒软件 AVG。我做错了什么?
答案1
最有可能的解释是是该端口上已经有服务,但您在任务管理器中看不到它,因为默认情况下它只会显示您的用户拥有的任务。
netstat
在管理员命令提示符中运行时检查命令的输出。
还要查找可能正在运行的服务services.msc
。postgresql-9.4-x86
请注意,除了这个问题之外,PostgreSQL 通常应作为 Windows 服务运行。pg_ctl register
如果不存在服务,请使用创建服务。
如果您想手动运行 PostgreSQL,我建议initdb
您使用自己的数据目录,而不是重新使用安装程序创建的数据目录。否则,如果您稍后切换回以服务形式运行,您可能会遇到文件权限问题。