如何在Windows上启动PostgreSQL?

144

我在我的Windows 10电脑上安装了Postgresql。 我使用pgAdmin II工具创建了一个名为company的数据库,现在我想启动数据库服务器运行。 我无法弄清如何做到这一点。 我在postgres命令行上运行了启动命令,但似乎没有任何反应。

我正在进行的操作是:

postgres=# pg_ctl start
postgres=# pg_ctl status
postgres=# pg_ctl restart
postgres=# pg_ctl start company
postgres=# pg_ctl status

我看到没有返回任何东西。


1
psql 通常会连接到正在运行的服务器。因此,如果您可以启动 psql,那么 Postgres 已经在运行了。 - user330315
谢谢。我现在明白发生了什么。 - Sean
注意:pg_ctl命令与服务器相关,而net命令与服务相关。 - user9652688
13个回答

100

进入安装了Postgres的C盘中的bin文件夹。 在Git Bash或命令提示符中运行以下命令:

pg_ctl.exe restart -D "<path upto data>"

Ex:

pg_ctl.exe restart -D  "C:\Program Files\PostgreSQL\9.6\data"

另一种方法: 在运行弹出窗口(windows + R)中键入"services.msc"。 这将显示所有正在运行的服务。 从列表中选择Postgres服务,然后单击启动/停止/重启。

谢谢


73
如果您是通过Windows安装程序安装了Postgres,可以按以下方式在服务中启动它:

输入图像描述


5
是的,没错,就是这个!服务窗口实际上会告诉您故障的原因。无论是服务未运行还是未按预期启动等。 - Arthur Tarasov
2
这应该是Windows的正确答案。我确定pg_ctl.exe有效,并且net start与此答案执行相同的操作,只不过需要在命令行中输入并且您必须知道服务的名称才能这样做(如果您知道服务的名称,那么您不需要回答这个问题)。 - Jared
不要忘记以管理员模式运行Services程序。 - Muhammad Awais
1
问题在于,PostgreSQL安装程序postgresql-14.5-1-windows-x64.exe不会创建这样的服务。因此,唯一的选择似乎是使用"C:\Program Files\PostgreSQL\14\bin\pg_ctl.exe" start命令,在控制台中启动它。或者您知道如何在安装后创建PostgreSQL服务吗? - Matt
(从postgresql.org下载的)Windows安装程序 - Matt
这不再是正确答案。来自EDB的PostgreSQL安装程序,也就是从postgres.org引用的那个,不再创建PostgreSQL服务。 - chaostheory

66

pg_ctl 是一个命令行程序(Windows),不是 SQL 语句。您需要从 cmd.exe 中执行该操作。或使用 net start postgresql-9.5

enter image description here


如果您通过安装程序安装了Postgres,应该启动Windows服务而不是手动运行pg_ctl,例如使用以下命令:
net start postgresql-9.5

请注意,在您的安装中,服务名称可能不同。另一种选择是通过Windows控制面板启动服务。
我使用pgAdmin II工具创建了一个名为company的数据库,这意味着Postgres已经在运行,所以我不明白为什么您认为需要再次进行操作。特别是安装程序通常会将服务设置为在Windows启动时自动启动。
你没有看到任何结果的原因是psql要求每个SQL命令以;结尾,在你的情况下,它只是在等待你完成语句。
更多详细信息请参见:在 psql 中,为什么有些命令没有效果?

出现以下错误 E:\Softwares\postgresql-12.4-1-windows-x64-binaries\pgsql\bin>pg_ctl -D datadir start pg_ctl: 目录 "datadir" 不存在 - Mahender Reddy Yasa
1
这个答案比上面的答案更好 https://dev59.com/oV8d5IYBdhLWcg3wxkpq - Mahender Reddy Yasa
问题在于,PostgreSQL安装程序postgresql-14.5-1-windows-x64.exe不会创建这样的服务。因此,唯一的选择似乎是使用"C:\Program Files\PostgreSQL\14\bin\pg_ctl.exe" start命令,在控制台中启动它。或者您知道如何在安装后创建PostgreSQL服务吗? - Matt
(从postgresql.org下载的)Windows安装程序 - Matt

28
经过大量的搜索和测试,我找到了一个解决方案。
如果你使用的是Windows操作系统:
1. 找到PG Databases目录,并在pgAdmin查询工具中执行以下命令作为sql命令

$ show data_directory;

结果:

------------------------
- D:/PG_DATA/data      -
------------------------
2. 前往您的postgres安装的bin目录(在我的情况下,它位于"c:/programms/postgresSql/bin")
3. 打开命令提示符(CMD)并执行以下命令:
pg_ctl -D "D:\PSG_SQL\data" restart
这样就可以了。

3
这是一个重新启动服务器的解决方案。 - HichamEch
使用 pg_ctl -D "D:\PSG_SQL\data" start 命令应该可以启动服务器。 - Tobias Marschall

7

在Windows设备上启动/停止/重启已安装的PostgreSQL服务器的最简单方法如下:

  • 启动 -> net start postgresql-x64-14
  • 停止 -> net stop postgresql-x64-14
  • 重启 -> net stop postgresql-x64-14 && net start postgresql-x64-14

版本号必须更改以考虑已安装的PostgreSQL服务器的版本。


4

对于Windows,以下命令对我非常有效:

pg_ctl.exe restart -D "<path_to_data>"

例如:pg_ctl.exe restart -D "D:\Program Files\PostgreSQL\13\data"

输入图片描述


3

打开PostgreSql数据库有不同的方法。 1> 其中一种方法是通过进入Windows并选择pgAdmin4或pgAdmin3(取决于您使用的版本),输入密码即可访问您的数据库。

2> 另一种方法是通过终端: 要能够从终端选择,您必须通过转到环境变量添加已安装的postgresql的路径。为此,请转到已安装的postgresql文件并选择bin路径,然后将其添加到窗口设置的环境变量中。 之后,您可以在终端中键入:psql -U postgres -h localhost

按回车键,它会要求您输入密码。输入密码后,您可以创建数据库和表并访问它。enter image description here

enter image description here


2

首先找到您的二进制文件并确定其保存位置,在终端中获取路径,我的路径是

C:\Users\LENOVO\Documents\postgresql-9.5.21-1-windows-x64-binaries (1)\pgsql\bin

然后找到您的本地用户数据路径,通常在以下位置:

C:\usr\local\pgsql\data

现在我们只需要在二进制终端路径中输入以下命令:

C:\Users\LENOVO\Documents\postgresql-9.5.21-1-windows-x64-binaries (1)\pgsql\bin>pg_ctl -D "C:\usr\local\pgsql\data" start

一切都完成了!

自动清理启动器已经开始工作了!干杯!


1
我发现在Windows系统上,使用net start postgres_service_name是操作Postgres的唯一可靠方式。

1
如果您遇到“psql.exe未被识别为内部或外部命令的错误”,可能有以下原因之一:
  • 系统无法找到psql.exe工具,因为该工具的路径未在系统环境变量PATH中指定
  • 您的电脑上未安装PostgreSQL数据库客户端
既然您已经安装了PostgreSQL,后者不应该是问题(假设一切都按预期安装)。要解决前者,请在PostgreSQL安装文件夹中指定bin目录的完整路径,即这个工具所在的位置。例如:
路径:“C:\Program Files\PostgreSQL\10\bin”

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接