web-dev-qa-db-ja.com

pg install: "データベースクラスターの初期化に失敗しました"

注:この質問は元の形式から完全に書き換えられたため、実際の問題を反映しています他の人が同じ問題の解決策を見つけるのに役立ちます)。


それでも、Windows 7 Ultimate x64コンピューターにPostgreSQLを正常にインストールできません。履歴については この前の質問 を参照してください。

私は9.2の新鮮な点眼を行いました、そして私が得た唯一のエラーはこれです:

error installing

それは読む:

「ポストインストールステップの実行中に問題が発生しました。インストールが正しく完了しない可能性があります。データベースクラスタの初期化に失敗しました」.

これは、PostgreSQLとpgAmdin-IIIを完全に手動でアンインストールした後でも発生します。

  • エラーError stopping service postgresql-x64-9.2で失敗したPostgreSQLアンインストーラーを実行しました。
  • PostgreSQLのすべてのPostgreSQL関連レジストリエントリを削除HKEY_LOCAL_MACHINE\SOFTWAREおよびHKEY_CURRENT_USER\SOFTWAREの下
  • 管理者コマンドプロンプトでNet User postgres /deleteを使用してpostgresユーザーアカウントを削除しました(スタートメニューで[コマンドプロンプト]を右クリックし、[管理者として実行]を選択しました)。
  • postgresユーザープロファイルを削除
  • %appdata%内のデータディレクトリを含むC:\Program Files\PostgreSQL\ディレクトリを削除しました
  • 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

完全なインストーラーログファイル ここからダウンロード を参照してください。

5
Celeritas

この問題の根本的な原因は、@ CeleritasのコンピューターのCOMSPEC環境変数の値が正しくなかったことにあると考えられます。末尾にセミコロンがあるため、通常の代わりに:

_C:\Windows\system32\cmd.exe
_

そうだった:

_C:\Windows\system32\cmd.exe;
_

この1文字の違いで十分です。上記は有効なコマンドプロンプトパスではないため、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
_

関連を参照してください:

私は これをインストーラーチームに報告したwikiエントリを記述した で説明しました。 ブログ投稿 を参照してください。

問題は最終的に解決されました:

  • COMSPEC環境変数の編集
  • PostgreSQLのアンインストール
  • 再起動中
  • PostgreSQLの再インストール

それより前には、手動でPostgreSQLを完全に手動でアンインストールするなど、これを解決するために実際には必要ないはずの多くのことがありました。

ここで、この環境変数を変更するプログラムを作成した人を見つけたいと思います。

6
Craig Ringer

この回答から https://dba.stackexchange.com/a/248584/18515

Windows 10で地域設定のコードページUTF-8を使用している場合(上のリンクの画像)、根本的な原因は次のとおりです。

  1. セットアップ呼び出しでのクラスターの初期化initdb
  2. initdbは、postgres -Vを呼び出すかのようにバージョンをチェックします
  3. postgres -VCPutf8を認識しませんが、一致しない結果を返します。

それが適切に修正されるまで、UTF-8コードページボックスのチェックを外して再起動するだけで問題ありません。

これはPostgreSQL 12でも再現できます。

この結果について@simonに感謝します。

0
sandthorn