做下记录,自己遇见的问题。翻看了很多资料,包括设置文件夹权限等,都无法解决。
最后个人遇见的这个错误,只需手动启动数据库服务即可。
转载请注明出处:https://blog.csdn.net/hx7013/article/details/124126849
一、错误详情
Problem running post-install step. Installation may not complete correctlty.
The database cluster initialisation failed.
Google translate
运行后安装步骤的问题。 安装可能无法完成正确。
数据库群集初始化失败。
二、解决方法
既然安装成功,只是初始化数据库失败,那么可以尝试手动初始化数据库。
环境说明:
Postgresql 14.2-2 windows-x64
Windowns Server 2019
安装路径:
D:\PostgreSQL
数据库路径:
D:\databases
1. 手动初始化数据库目录
找到安装目录下的bin文件夹,使用initdb
命令,手动初始化数据库目录D:\databases
。
D:\PostgreSQL\bin>initdb.exe -D D:\databases
2. 开启数据库服务
找到安装目录下的bin文件夹,使用pg_ctl
命令,注册一个名为postgresql14
的服务,并指定数据库目录为D:\databases
。
D:\PostgreSQL\bin>pg_ctl.exe register -N postgresql14 -D D:\databases
至此,如果你也是初始化数据库失败,现在应该已经能在系统服务内找到postgresql14
这个服务了,双击并启动这个服务。
启动服务时可能会出现 错误5:拒绝访问
查看发现PostgreSQL的服务依存于网络服务
账户,这种问题直接给Postgresql的安装目录
及数据库目录
的权限里添加NETWORK_SERVER
账户的控制权即可。
D:\PostgreSQL
D:\databases
3. 用户问题
由于使用了Administrator
来新建了数据库,所以在用pgAdmin
或者命令行登录的时候,会导致用户名为Administrator
。
可以使用Administrator
正常登录后,创建postgres
用户。
三、initdb
及pg_ctl
参数说明
1. initdb
initdb 初始化一个 PostgreSQL 数据库簇.
使用方法:
initdb [选项]... [DATADIR]
选项:
-A, --auth=METHOD 本地连接的默认认证方法
--auth-host=METHOD 本地的TCP/IP连接的默认认证方法
--auth-local=METHOD 本地socket连接的默认认证方法
-D, --pgdata=DATADIR 当前数据库簇的位置
-E, --encoding=ENCODING 为新数据库设置默认编码
-g, --allow-group-access 允许组对数据目录进行读/执行
-k, --data-checksums 使用数据页产生效验和
--locale=LOCALE 为新数据库设置默认语言环境
--lc-collate, --lc-ctype, --lc-messages=LOCALE
--lc-monetary, --lc-numeric, --lc-time=LOCALE
为新的数据库簇在各自的目录中分别
设定缺省语言环境(默认使用环境变量)
--no-locale 等同于 --locale=C
--pwfile=FILE 对于新的超级用户从文件读取口令
-T, --text-search-config=CFG
缺省的文本搜索配置
-U, --username=NAME 数据库超级用户名
-W, --pwprompt 对于新的超级用户提示输入口令
-X, --waldir=WALDIR 预写日志目录的位置
--wal-segsize=SIZE WAL段的大小(兆字节)
非普通使用选项:
-d, --debug 产生大量的除错信息
--discard-caches 设置debug_discard_caches=1
-L DIRECTORY 输入文件的位置
-n, --no-clean 出错后不清理
-N, --no-sync 不用等待变化安全写入磁盘
--no-instructions 不要打印后续步骤的说明
-s, --show 显示内部设置
-S, --sync-only 只同步数据目录
其它选项:
-V, --version 输出版本信息, 然后退出
-?, --help 显示此帮助, 然后退出
如果没有指定数据目录, 将使用环境变量 PGDATA
2. pg_ctl
pg_ctl 是一个用于初始化、启动、停止或控制PostgreSQL服务器的工具.
使用方法:
pg_ctl init[db] [-D 数据目录] [-s] [-o 选项]
pg_ctl start [-D 数据目录] [-l 文件名] [-W] [-t 秒数] [-s]
[-o 选项] [-p 路径] [-c]
pg_ctl stop [-D 数据目录] [-m SHUTDOWN-MODE] [-W] [-t 秒数] [-s]
pg_ctl restart [-D 数据目录] [-m SHUTDOWN-MODE] [-W] [-t 秒数] [-s]
[-o 选项] [-c]
pg_ctl reload [-D 数据目录] [-s]
pg_ctl status [-D 数据目录]
pg_ctl promote [-D 数据目录] [-W] [-t 秒数] [-s]
pg_ctl logrotate [-D 数据目录] [-s]
pg_ctl kill 信号名称 进程号
pg_ctl register [-D 数据目录] [-N 服务名称] [-U 用户名] [-P 口令]
[-S 启动类型] [-e 源] [-W] [-t 秒数] [-s] [-o 选项]
pg_ctl unregister [-N 服务名称]
普通选项:
-D, --pgdata=数据目录 数据库存储区域的位置
-e SOURCE 当作为一个服务运行时要记录的事件的来源
-s, --silent 只打印错误信息, 没有其他信息
-t, --timeout=SECS 当使用-w 选项时需要等待的秒数
-V, --version 输出版本信息, 然后退出
-w, --wait 等待直到操作完成(默认)
-W, --no-wait 不用等待操作完成
-?, --help 显示此帮助, 然后退出
如果省略了 -D 选项, 将使用 PGDATA 环境变量.
启动或重启的选项:
-c, --core-files 在这种平台上不可用
-l, --log=FILENAME 写入 (或追加) 服务器日志到文件FILENAME
-o, --options=OPTIONS 传递给postgres的命令行选项
(PostgreSQL 服务器执行文件)或initdb
-p PATH-TO-POSTMASTER 正常情况不必要
停止或重启的选项:
-m, --mode=MODE 可以是 "smart", "fast", 或者 "immediate"
关闭模式有如下几种:
smart 所有客户端断开连接后退出
fast 直接退出, 正确的关闭(默认)
immediate 不完全的关闭退出; 重启后恢复
允许关闭的信号名称:
ABRT HUP INT KILL QUIT TERM USR1 USR2
注册或注销的选项:
-N 服务名称 注册到 PostgreSQL 服务器的服务名称
-P 口令 注册到 PostgreSQL 服务器帐户的口令
-U 用户名 注册到 PostgreSQL 服务器帐户的用户名
-S START-TYPE 注册到PostgreSQL服务器的服务启动类型
启动类型有:
auto 在系统启动时自动启动服务(默认选项)
demand 按需启动服务
由于报错原因各不一样,解决方法不保证通用。
其它参照解决办法:
- 尝试给安装目录及数据库目录提前设置权限
- 右键管理员启动安装程序等方法尝试
转载请注明出处:https://blog.csdn.net/hx7013/article/details/124126849