AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 28836
Accepted
Celeritas
Celeritas
Asked: 2012-11-17 17:08:57 +0800 CST2012-11-17 17:08:57 +0800 CST 2012-11-17 17:08:57 +0800 CST

pg install:“数据库集群初始化失败”

  • 772

(注意:此问题已从其原始形式强制改写,因此它反映了实际问题,并将帮助其他人找到相同问题的解决方案)。


我仍然无法在我的 Windows 7 Ultimate x64 计算机上成功安装 PostgreSQL。有关一些历史,请参阅此先前的问题。

我重新灌输了 9.2,我得到的唯一错误是这个:

安装错误

上面写着:

“运行安装后步骤时出现问题。安装可能无法正确完成。数据库集群初始化失败”。

即使在我完全手动卸载 PostgreSQL 和 pgAmdin-III 之后也会发生这种情况:

  • 运行 PostgreSQL 卸载程序,失败并出现错误Error stopping service postgresql-x64-9.2。
  • 删除了 PostgreSQL下HKEY_LOCAL_MACHINE\SOFTWARE的所有 PostgreSQL 相关注册表项HKEY_CURRENT_USER\SOFTWARE
  • 删除了在管理员命令提示符中postgres使用的用户帐户net user postgres /delete(在开始菜单中右键单击“命令提示符”,选择“以管理员身份运行”)
  • 删除了postgres用户配置文件
  • 删除C:\Program Files\PostgreSQL\目录,包括%appdata%内的数据目录
  • 删除了一些指向 PostgreSQL 的 PgAdmin-III 注册表项
  • 删除了 postgres 的服务帐户services.msc

当我重新启动并再次尝试安装程序时,它会失败并显示相同的消息。

来自的install-postgresql.log文件%TEMP%包含:

Executing cscript //NoLogo "C:\Program Files\PostgreSQL\9.2/installer/server/initcluster.vbs" "NT AUTHORITY\NetworkService" "postgres" "****" "C:\Program Files\PostgreSQL\9.2" "C:\Program Files\PostgreSQL\9.2\data" 5432 "DEFAULT"
Script exit code: 1

稍后又出现另一个错误:

creating template1 database in C:/Program Files/PostgreSQL/9.2/data/base/1 ... initdb: could not execute command ""C:/Program Files/PostgreSQL/9.2/bin/postgres.exe" --boot -x1 -F ": No error

在此处查看完整的安装程序日志文件下载。

postgresql windows
  • 5 5 个回答
  • 36314 Views

5 个回答

  • Voted
  1. Best Answer
    Craig Ringer
    2012-11-19T20:17:34+08:002012-11-19T20:17:34+08:00

    看来此问题的根本原因可能是@Celeritas 的计算机的COMSPEC环境变量值不正确。它有一个尾随分号,所以不是正常的:

    C:\Windows\system32\cmd.exe
    

    它是:

    C:\Windows\system32\cmd.exe;
    

    这一个字符的差异就足够了。以上不是有效的命令提示符路径,因此popen()调用失败。不幸的是,而不是有用的东西,比如:

    '"C:\Windows\system32\cmd.exe;"' is not recognized as an internal or external command, operable program or batch file
    

    相反,它报告了令人愉快的有用错误No error:

    initdb: could not execute command ""C:/Program Files/PostgreSQL/9.2/bin/postgres.exe" --boot -x1 -F ": No error
    

    见相关:

    • http://forums.enterprisedb.com/posts/list/2125.page
    • http://postgresql.1045698.n5.nabble.com/initdb-failure-td2083455.html

    我已将此情况报告给安装团队并写了一个 wiki 条目来描述它。见博文。

    该问题最终通过以下方式解决:

    • 编辑COMSPEC环境变量
    • 卸载 PostgreSQL
    • 重新启动
    • 重新安装 PostgreSQL

    尽管在此之前还有很多实际上不需要解决这个问题,包括手动完全手动彻底卸载 PostgreSQL。

    现在我只想找到编写修改这个环境变量的程序的人。

    • 6
  2. sandthorn
    2019-10-27T23:22:36+08:002019-10-27T23:22:36+08:00

    从这个答案https://dba.stackexchange.com/a/248584/185153

    如果您在 Windows 10 上使用区域设置中的代码页 UTF-8(上面链接中的图片),根本原因是:

    1. 设置调用中的集群初始化initdb
    2. initdb检查版本就像调用postgres -V
    3. postgres -V不识别CPutf8然后返回一个不匹配的结果。

    在正确修复之前,您可以取消选中 UTF-8 代码页框并重新启动,它会好的。

    这也可以在 PostgreSQL 12 中重现。

    感谢@simon 的这一发现。

    • 0
  3. Samiksha Warang
    2020-05-28T12:22:25+08:002020-05-28T12:22:25+08:00

    为这个问题苦苦挣扎了好几天。终于得到了 EDB 团队的帮助,我的问题通过以下步骤得到了解决:

    1)打开命令提示符并转到以下目录。

    cd "C:\Program Files\PostgreSQL\10\bin"

    2) 进入“C:\Program Files\PostgreSQL\10\bin”目录后,执行以下命令。

    .\initdb.exe -D "C:\Program Files\PostgreSQL\10\data"

    3) 在此命令结束时,您将被提升为执行 pg_ctl 命令以启动 Postgres 集群。请执行命令,一旦你在服务器启动时收到一条消息,你就可以使用 Postgres 数据库了。

    注意:不是10用户安装的任何版本。如果在第三步中的pg_ctl命令在\bin目录下运行后出现错误,则尝试在\data目录下运行它。上述过程后重新运行安装程序。

    • 0
  4. Jonathan Jusczyk
    2021-01-26T07:38:52+08:002021-01-26T07:38:52+08:00

    问题:

    在 Windows Server 2019 上安装 13.1.1 失败并显示消息

    “运行安装后步骤时出现问题。安装可能无法正确完成。数据库集群初始化失败”。

    • 我的 COMSPEC 环境变量配置正确。

    • 我的 UTF-8 代码页设置被禁用。

    • 手动调用 initdb 失败,原因如下:

       PS C:\Program Files\PostgreSQL\13\bin> .\initdb.exe -D "D:\PostgreSQL"
       The files belonging to this database system will be owned by user "myUser".
       This user must also own the server process.
      
       The database cluster will be initialized with locale "English_United States.1252".
       The default database encoding has accordingly been set to "WIN1252".
       The default text search configuration will be set to "english".
      
       Data page checksums are disabled.
      
       fixing permissions on existing directory D:/PostgreSQL ... ok
       creating subdirectories ... ok
       selecting dynamic shared memory implementation ... windows
       selecting default max_connections ... 100
       selecting default shared_buffers ... 128MB
       selecting default time zone ... US/Eastern
       creating configuration files ... ok
       running bootstrap script ... 2021-01-25 09:55:49.793 EST [51184] LOG:  unrecognized win32 error code: 50
       2021-01-25 09:55:49.804 EST [51184] LOG:  could not link file "pg_wal/xlogtemp.51184" to "pg_wal/000000010000000000000001": Invalid argument
       2021-01-25 09:55:49.808 EST [51184] FATAL:  could not open file "pg_wal/000000010000000000000001": No such file or directory
       child process exited with exit code 1
       initdb: removing contents of data directory "D:/PostgreSQL"
      

    可能的原因:

    驱动器 D:使用 ReFS 格式化。在 NTFS 驱动器上初始化没有问题。

    解决方案:

    初始化驱动器 C:\PostgreSQL 上的数据库,然后将文件夹复制到 D:\PostgreSQL。

    以普通用户(不是管理员)打开终端并运行:

    C:\Users\myUser>"C:\Program Files\PostgreSQL\13\bin\pg_ctl.exe" -D "D:\PostgreSQL" -l logfile start
    waiting for server to start.... done
    server started
    

    启动 psql shell 并使用用户 myUser 登录。然后,您可以根据需要创建一个 postgres 用户:

    CREATE ROLE postgres LOGIN PASSWORD 'password' NOINHERIT CREATEDB;
    CREATE SCHEMA postgres AUTHORIZATION postgres;
    GRANT USAGE ON SCHEMA postgres TO PUBLIC;
    
    • 0
  5. Slobodan Margetić
    2022-01-20T02:02:03+08:002022-01-20T02:02:03+08:00

    对于 2022 年仍在为此苦苦挣扎的人。在 Windows 10 上唯一对我有用的是选择英美作为本地环境,而不是我自己的拉丁语言环境。

    • 0

相关问题

  • 运行时间偏移延迟复制的最佳实践

  • Oracle 可以在 Windows 上安装而不是管理员吗?

  • 存储过程可以防止 SQL 注入吗?

  • PostgreSQL 中 UniProt 的生物序列

  • PostgreSQL 9.0 Replication 和 Slony-I 有什么区别?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何查看 Oracle 中的数据库列表?

    • 8 个回答
  • Marko Smith

    mysql innodb_buffer_pool_size 应该有多大?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    从 .frm 和 .ibd 文件恢复表?

    • 10 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve