postgres 安装错误 post-bootstrap 致命:字节序列无效

问题描述

我正在尝试安装 Postgres 13(Windows 版本),但总是遇到相同的错误(部分为西班牙语):

realizando inicializaci¢n post-bootstrap ... 2021-04-30 12:10:54.935 CEST [1224] 致命:编码“UTF8”的无效字节序列:0xbf el proceso hijo termin¢ con c¢ digo de salida 1 initdb: eliminando el contenido del Directorio ®C:/Postgresql13/data¯

Called Die(无法使用 initdb 初始化数据库集群)... 使用 initdb 初始化数据库集群失败

脚本标准错误: 程序以错误退出代码结束

Error al ejecutar C:\WINDOWS\System32\cscript //Nologo "C:\Postgresql13/installer/server/initcluster.vbs" "NT AUTHORITY\NetworkService" "postgres" "****" "C:\ Users\user1\AppData\Local\Temp/postgresql_installer_b86f3c1062" "C:\Postgresql13" "C:\Postgresql13\data" 5432 "English,UnitedStates" 0 :程序以错误退出代码结束 问题 al ejecutar el paso post instalación。 La instalación no pudo finalizar Correctamente La inicialización del clúster de la base de datos falló.

用户 user1 具有管理员权限。我也尝试安装版本 12 而不是 13,但结果是一样的。

有什么建议吗?

解决方法

这很可能是因为数据库超级用户名包含非 ASCII 字符。

我不知道你是如何安装 PostgreSQL 的,但是当你运行 initdb 来创建一个数据目录(它与你的消息中的“initcluster”脚本相匹配)时,这可能会发生。

如果您不使用 -Uinitdb 选项指定超级用户名(习惯上使用 nae postgres),initdb 将命名超级用户就像您当前的操作系统用户。如果您使用的是 Windows,则该名称将使用 Windows-1252 之类的 Windows 编码进行编码。现在数据库不知道这一点,当它创建数据库用户时,它使用该用户名的字节。如果这不是正确编码的 UTF-8(如果它包含非 ASCII 字符则不会),则会导致此错误。

我的建议是,您使用名称中包含所有 ASCII 字符的操作系统用户登录 Windows,然后重试。