【问题标题】:Win 10 Postgresql 11 database cluster initialisation failedWin 10 Postgresql 11 数据库集群初始化失败
【发布时间】:2019-07-04 23:59:27
【问题描述】:

我从戴尔 (XPS 15) 购买了一台装有 Windows 10 Pro 的新笔记本电脑。 我总是遇到同样的问题在安装 postgres 期间“运行安装后步骤时出现问题。安装可能无法正确完成。数据库集群初始化失败。” .

我尝试了很多过去线程的解决方案: 将 postgres 安装到程序文件中 创建一个名为 postgres 的用户,具有对 postgress 目录的完全访问权限,此处解释为 https://www.youtube.com/watch?v=pS_zWDDDSe0 检查新的胜利更新 关闭了 Windows 的防火墙和杀毒软件。

错误运行 cscript //NoLogo "C:\develop\postgres/installer/server/initcluster.vbs" "NT AUTHORITY\NetworkService" "postgres" "****" "C:\develop\postgres" "C :\develop\postgres\data" 5432 "DEFAULT" 0: 程序以错误退出代码结束 运行安装后步骤时出现问题。安装可能无法正确完成 数据库集群初始化失败。 [14:03:49] 删除临时脚本目录... 创建菜单快捷方式... 执行 cscript //NoLogo "C:\develop\postgres\installer\server\createshortcuts_clt.vbs" "PostgreSQL 11" "C:\develop\postgres" 脚本退出代码:0

编辑错误日志

Executing batch file 'radAD31B.bat'...
The program "postgres" was found by "C:/develop/postgres/bin/initdb.exe" but was not the same version as initdb.

【问题讨论】:

    标签: windows postgresql-11


    【解决方案1】:

    我已经为此苦苦挣扎了几个小时,所以我将这篇文章发布给任何在这里结束的人。

    最初,我只能在pgsql-bugs 邮件列表中找到两个错误报告:

    BUG #15856: The program "postgres" was found by "initdb" but was not the same version as initdb.

    BUG #15970: Db initialization error - initdb.exe and postgres not same version

    具体症状是:

    The program "postgres" was found by ".../initdb.exe" but was not the same version as initdb.
    

    虽然版本匹配,但您会得到:

    C:\Program Files\PostgreSQL\11\bin>postgres -V
    WARNING:  01000: could not determine encoding for locale
    "<some encoding>.utf8": codeset is "CPutf8"
    

    如果这些是您的症状,则问题在于您将区域/语言设置设置为使用 UTF-8(测试版设置)。这会导致很多程序出现问题,PostgreSQL 就是其中之一。禁用它并重新安装,你应该没问题。

    【讨论】:

    • 您是如何发现这一点的?我会花几天的时间!非常感谢!!!!
    【解决方案2】:

    如果您曾经更改过注册表中的命令行代码编码参数

    HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\Autorun

    到 chcp 65001、chcp 1251 或任何其他,那么这可能是问题所在。

    将命令行编码注册表值的值返回为默认值(空)解决了我的问题。

    尝试将您的注册表值更改为空:

    HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\Autorun

    【讨论】:

    • 这是唯一对我有用的解决方案。
    • 这个解决方案就像一个魔术。但是,我无法理解 Autorun 字段值对于 postgres 执行 initdb 的重要性。
    【解决方案3】:

    按照这些步骤来避免此错误

    1. 卸载 PostgreSQL
    2. 如果您有 postgres 用户,请删除
    3. 右键单击我的电脑/这台电脑,然后单击管理转到本地用户和组,然后单击用户 新用户输入用户名 postgres 和密码(随便你),然后点击创建按钮。
    4. 现在右击 postgres 用户并点击 properties 点击 Member of 选项卡,然后点击 Add此处的按钮单击 高级 并为组打开一个新对话框单击 立即查找 并选择 管理员 单击 确定按钮。
    5. 现在打开命令提示符/cmd
    6. 在此处输入 runas /user:postgres cmd.exe 并回车
    7. cd 下载的 Postgresql 文件夹路径回车
    8. postgresql-x.x.x-x-windows.exe 输入(此处的 x 反映发行版、主要和次要版本)。
    9. 现在重复第 4 步并删除组 Administrators 并添加 Power Users

    【讨论】:

    • 当前 Postgres 版本不需要专门的postgres Windows 用户来安装。
    • @a_horse_with_no_name 如果发生上述错误,我们必须创建一个 postgres 用户
    • 不,你不必
    • @a_horse_with_no_name 如果您有任何解决方案而不是在此处分享,此解决方案对我有用。
    • @Andrew:我还没有创建postgres Windows 用户,因为我认为 Postgres 9.2 或类似的东西。但后来我从不使用安装程序,我使用 ZIP 包并手动运行 initdb
    【解决方案4】:

    刚刚在 postgres 12 上遇到了这个问题,我的解决方法类似于 Atif,但使用命令行:

    1. 卸载 PostgreSQL

    2. 如果 postgres 用户仍然存在,则删除它:

      net user postgres /delete

    3. 使用您可以记住的密码创建 postgres 用户:

      net user /add postgres [密码]

    4. 将 postgres 用户添加到管理员组:

      net localgroup 管理员 postgres /add

    5. 在 win 10 和默认用户上不再存在此群组 应该有必要的权限 - 将 postgres 用户添加到 高级用户组

    6. 以 postgres 用户身份运行命令窗口:(打开新命令 窗口):

      runas /user:postgres cmd.exe

    7. 将安装文件复制到该用户可访问的位置并运行 例如:

      C:\下载\postgresql-12.4-1-windows-x64.exe

    8. 从管理员组中删除 postgres 用户:

      net localgroup 管理员 postgres /delete

    就是这样。 希望这有用

    【讨论】:

      【解决方案5】:

      我查看了可用的解决方案,但没有一个对我有用,所以我只是在我的 Windows 10 桌面上创建了一个新用户并在那里进行了安装,它能够成功完成。

      【讨论】:

        【解决方案6】:

        卸载可能不会删除所有注册表项。您可以在任务栏搜索中输入registry,然后打开Registry Editor

        导航到:

        Computer\HKEY_LOCAL_MACHINE\SOFTWARE
        

        并删除与postgresql 相关的条目。

        【讨论】:

          【解决方案7】:

          在 Windows 上使用 EDB 安装程序安装 PostgreSQL 是为了让 bald(er) 更快。您可以在 WSL(Linux 的 Windows 子系统)上运行 PostgreSQL,并在 Windows 上连接到它!

          以管理员身份打开 Windows 终端/PowerShell(右键单击 Windows 11 上的开始图标 -> Windows 终端(管理员)。输入:

          wsl --install
          

          重新启动您的计算机。登录后 Ubuntu 将自动安装,WSL2 和 Ubuntu 是 Windows 11 的标准配置(查看有关如何选择不同发行版等的文档)按照说明输入所需的用户名和密码。

          更新 Ubuntu:

          sudo apt update && sudo apt upgrade
          

          安装 PostgreSQL:

          sudo apt install postgresql
          

          给“postgres”用户一个密码:

          sudo passwd postgres
          

          启动服务并打开psql shell:

          sudo service postgresql start && sudo -u postgres psql
          

          请注意,您创建的密码不是 postgres 的数据库密码,因此除非您创建新用户,否则您可以在 psql shell 中为 postgres 提供一个:

          ALTER USER postgres PASSWORD 'mypw';
          

          现在您可以安装 pgAdmin 或使用您自己的程序(在“普通”Windows 中)来确认您可以使用用户 postgres 和他的密码在 127.0.0.1 上使用端口 5432(可能会有所不同)进行连接。

          【讨论】:

            猜你喜欢
            • 2022-08-24
            • 1970-01-01
            • 2015-12-03
            • 2017-09-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-01-12
            • 1970-01-01
            相关资源
            最近更新 更多