Windows 2019上的Postgres initdb无效

141次阅读
没有评论

问题描述

使用Ansible在Windows 2019机器上安装Postgres 13。他从这里下载了二进制文件,并将其解压到C:\PostgreSQL\13\pgsql,然后通过Ansible任务将路径添加到系统路径中。然后,他有一个Ansible任务执行以下操作:

initdb -D I:\PostgreSQL\13\DATA -U postgres -E UTF8

但是它失败了,唯一的错误是非零返回代码。
为了测试,用户在Windows Powershell中输入initdb -V,却没有任何反馈 – 没有错误,没有任何输出!添加-d(调试)选项也没有任何效果。
用户甚至尝试手动下载zip文件并重新解压,但仍然无效。请问发生了什么?

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

在Windows上,initdb命令可能无法正常工作的原因有很多。以下是一些可能的解决方案:
1. 检查路径和文件权限:确保initdb命令的路径和数据目录的路径是正确的,并且对于执行initdb命令的用户具有适当的权限。
2. 检查环境变量:确保Postgres的安装路径已正确添加到系统的环境变量中。可以通过在命令提示符下运行echo %PATH%来检查环境变量。
3. 检查依赖项:确保系统上已安装了Postgres所需的所有依赖项。这可能包括Microsoft Visual C++ Redistributable等。
4. 检查日志文件:尝试查看Postgres的日志文件,以获取更多关于问题的信息。默认情况下,日志文件位于数据目录的pg_log子目录中。
5. 尝试手动初始化数据库:可以尝试手动初始化数据库,以查看是否会出现任何错误消息。可以使用以下命令:
initdb -D I:\PostgreSQL\13\DATA -U postgres -E UTF8 --pwfile=I:\PostgreSQL\13\DATA\pwfile.txt
这将使用指定的数据目录、用户名和编码进行数据库初始化,并将密码存储在pwfile.txt文件中。如果有任何错误消息,请查看错误消息并尝试解决它们。

如果上述解决方案都无效,可能需要进一步调查问题的根本原因。可以尝试在Postgres的官方论坛或邮件列表上寻求帮助,以获取更多专业的支持。

希望这些解决方案能帮助到你解决问题。如果你有任何其他问题,请随时提问。

正文完