(注:この質問は元の形式から完全に書き換えられたため、実際の問題を反映しています他の人が同じ問題の解決策を見つけるのに役立ちます)。
それでも、Windows 7 Ultimate x64コンピューターにPostgreSQLを正常にインストールできません。履歴については この前の質問 を参照してください。
私は9.2の新鮮な点眼を行いました、そして私が得た唯一のエラーはこれです:
それは読む:
「ポストインストールステップの実行中に問題が発生しました。インストールが正しく完了しない可能性があります。データベースクラスタの初期化に失敗しました」.
これは、PostgreSQLとpgAmdin-IIIを完全に手動でアンインストールした後でも発生します。
Error stopping service postgresql-x64-9.2
で失敗したPostgreSQLアンインストーラーを実行しました。HKEY_LOCAL_MACHINE\SOFTWARE
およびHKEY_CURRENT_USER\SOFTWARE
の下Net User postgres /delete
を使用してpostgres
ユーザーアカウントを削除しました(スタートメニューで[コマンドプロンプト]を右クリックし、[管理者として実行]を選択しました)。postgres
ユーザープロファイルを削除C:\Program Files\PostgreSQL\
ディレクトリを削除しました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
完全なインストーラーログファイル ここからダウンロード を参照してください。
この問題の根本的な原因は、@ 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を完全に手動でアンインストールするなど、これを解決するために実際には必要ないはずの多くのことがありました。
ここで、この環境変数を変更するプログラムを作成した人を見つけたいと思います。
この回答から https://dba.stackexchange.com/a/248584/18515
Windows 10で地域設定のコードページUTF-8を使用している場合(上のリンクの画像)、根本的な原因は次のとおりです。
initdb
initdb
は、postgres -V
を呼び出すかのようにバージョンをチェックしますpostgres -V
はCPutf8
を認識しませんが、一致しない結果を返します。それが適切に修正されるまで、UTF-8コードページボックスのチェックを外して再起動するだけで問題ありません。
これはPostgreSQL 12でも再現できます。
この結果について@simonに感謝します。