在安装 postgreSQL 的过程中,一开始由于账户用户名为中文,导致无法安装(安装路径中有中文也会发生此问题),后又在即将安装成功时提示

Failed to load sql modules into the database cluster

我用的是 12.9。

心态崩了,从昨天下午一直找到今天下午。网上的教程中,核心是安装文件夹的权限问题(主要是其下安装时生成的 data 的权限问题)。但是对于我这台电脑而言(不知道什么原因),即使给了安装目录“完全控制”的权限,在安装时也会发现:目录的读写权限都没了!哪怕用的是 administrator 账户也无济于事。根据网上杂七杂八的教程与自己一番摸索,终于解决了安装问题。

  1. 创建一个本地管理员账户,名字可以是 postgres,因为数据库默认的名字也是这个。当然也可以自己指定,安装软件的账户名称将作为数据库的用户名。我取的名字是 postgreSQL

  2. 用 posgreSQL cmd 安装软件

    1. 在当前账户点击运行 cmd

    2. 在 cmd 中输入 runas /user:postgreSQL cmd.exe 并回车

在这里插入图片描述

  1. 在新打开的 cmd 中用 cd 命令跳转至软件的目录下(我运行了两次,实际只需一次,我是取消了再运行的)

在这里插入图片描述

  1. 安装软件

在这里插入图片描述

此时,软件报错

Failed to load sql modules into the database cluster

在这里插入图片描述

不管它,点击ok,等待安装完成。

安装完成后点击完成,然后点击取消(如果不想要安装第三方软件包)。

接下来,检查安装目录下的 data 文件夹的权限

先双击文件夹以访问其内容,然后回到上一级目录,在 data 文件夹右键,属性→安全

在这里插入图片描述

我已经为我的账户提供了完全控制权限。如果您的“组或用户名”列表中无此内容,可以点击“编辑”→“添加”→在“输入对象名称”一栏输入账户名称(我的是 postgreSQL)。输入后点击“确定”。如果提示找不到该对象,请确认已经输入了正确的用户名

在这里插入图片描述

然后,

  1. 清空 data 文件夹下的所有内容;

  2. 将先前的 postgreSQL cmd 路径到 …\bin\ 文件夹下。…\bin 根据不同人的安装路径不同而不同,我的是 C:\Program Files\PostgreSQL\12\bin

在这里插入图片描述

  1. 在 cmd 中输入命令 pg_ctl start -D ..\data\ initdb

在这里插入图片描述

  1. 接着执行(注意不能有中文) ^"C^:^\Program^ Files^\PostgreSQL^\12^\bin^\pg^_ctl^" -D ../data -l logfile start

  2. 此时可能提示

等待服务器进程启动 ....拒绝访问。
 已停止等待
pg_ctl: 无法启动服务器进程
检查日志输出.

在 postgreSQL cmd 中输入 pg_ctl.exe start -D ..\data 即可

等待服务器进程启动 ....2022-01-14 16:14:06.794 CST [7380] 日志:  正在启动 PostgreSQL 12.9, compiled by Visual C++ build 1914, 64-bit
2022-01-14 16:14:06.817 CST [7380] 日志:  正在监听IPv6地址"::1",端口 5432
2022-01-14 16:14:06.818 CST [7380] 日志:  正在监听IPv4地址"127.0.0.1",端口 5432
2022-01-14 16:14:06.989 CST [21856] 日志:  数据库上次关闭时间为 2022-01-14 16:09:35 CST
2022-01-14 16:14:07.103 CST [7380] 日志:  数据库系统准备接受连接
 完成
服务器进程已经启动

如果还失败,请检查 data 文件夹权限。

打开 SQL shell,一切正常

在这里插入图片描述

如果还失败,请检查 data 文件夹权限。

打开 SQL shell,一切正常

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐