PostgreSQL: 安装时提示 The database cluster initialisation failed

PostgreSQL: 安装时提示 The database cluster initialisation failed

本文正在参与「金石方案」


PostgreSQL: 安装时提示 The database cluster initialisation failed

problem running post-install step
installation may not complete correctly
The database cluster initialisation failed.

碰到该问题是因为没有运用默许 Locale ,挑选的Locale 体系不支持。

解决方法

呈现该问题,等安装程序履行完成后,运用 initdb 手动初始化数据库。
初始化数据库时,一定要指定用户( -U postgres),

命令是:

$ initdb -U postgres -d ./data -E UTF8 --locale=ja_JP

-d 后边指定的是数据放置的目录。

-E 是编码,–locale 是区域言语。

这里的 -E UTF8 --locale=ja_JP 是日语的 UTF8 ,能够不指定运用默许。

履行成果如下:

$ initdb -U postgres -d ./data -E UTF8 --locale=ja_JP
Running in debug mode.
The files belonging to this database system will be owned by user "bettersun".
This user must also own the server process.
...
Data page checksums are disabled.
creating directory data ... initdb: error: could not create directory "data": Permission denied

碰到该过错,是由于 data 地点目录的权限缺乏,需求修正一下 data 地点目录的权限。
该问题是在 Mac 上碰到的。

例如 data 的方位是 develop/data
那能够进入到 develop 地点目录(develop 的父目录),然后履行如下命令修正文件权限

chmod 777 ./develop/

然后再次运转 initdb ,控制台会输出一堆信息后,最终提示成功。

最终的控制台信息如下:

...
performing post-bootstrap initialization ... ok
syncing data to disk ... ok
initdb: warning: enabling "trust" authentication for local connections
initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb.
Success. You can now start the database server using:
  pg_ctl -D ./data -l logfile start

再按照提示启动数据库服务:

$ pg_ctl -D ./data -l logfile start
waiting for server to start.... done
server started

留意:不能关闭控制台,不然数据库服务就中止了。

initdb 后边不指定用户时,衔接时会提示如下的过错:

PostgreSQL: 安装时提示 The database cluster initialisation failed

could not initiate GSSAPI security context: The operation or option is not available:Credential for asked mech-type mech not found in the credential handle connection to server at "127.0.0.1", port 5432 failed: FATAL: role "postgres" does not exist

跋文

initdb 在Windows 上有个很奇怪的BUG。

initdb -U postgres -d ./data -E UTF8 --locale=xx_xx

上面命令中的 locale 不是实在存在的。
但是在 Windows 上运转命令竟然能通过,在 Mac 上会提示 locale 不存在。


本文正在参与「金石方案」