web-dev-qa-db-ja.com

psql.exeを起動する方法

私はpostgresql(pg)が初めてです。 pgを操作するには、psql.exeを使用する必要があることを理解しています。

私のシステムでは、psql.exeが1回ではなく2回見つかりました。なぜですか。 (C:\Program Files (x86)\pgAdmin 4\v2\runtime\psql.exeおよびC:\Program Files\PostgreSQL\10\bin\psql.exe)。私は両方を試しましたが、結果は同じ(マイナス)でした。

Q/Aに沿って PostgreSQLで、パスワードを入力した後にEnterキーを押すとコマンドラインウィンドウが消えるのはなぜですか? 今、psql.exeを直接実行する代わりに、最初にジェネリック(Windows)を開きましたコマンドウィンドウを使用して、この汎用コマンドウィンドウ内からpsql.exeを実行しました。次に、パスワードを入力してEnterキーを押します。

汎用(Windows)コマンドウィンドウで、次のメッセージが表示されます。

psql:サーバーに接続できませんでした:権限が拒否されました(0x0000271D/10013)
サーバーはホスト "localhost"(:: 1)で実行されており、ポート5432でTCP/IP接続を受け入れていますか?致命的:ユーザー「User」のパスワード認証に失敗しました

これは、上記のQ/Aで説明されている(ただし、解決されていない)問題に対応しています。このフォーラムの他のスレッドは、パスワードの変更に失敗します。Linux/古いパスワード/パスワード変更後の新しいパスワードに関係します。

この他のスレッドでは、Windowsにはpgpass.confというファイルがあると言われています。ヘルプファイルlibpq-pgpass.htmlが見つかります。これは、私のシステム上にそのようなファイルpgpass.conf(または前述のhtmlファイル以外の「pgpass」を備えた他のファイル)がないことも示しています。

(W10教授64ビット英語)

2番目の戦略:

StartMenu内には、「PostgreSQL」というエントリがあります。その下-Enterで利用可能-サブエントリー「SQLシェル(psql)」があります。だから私はそれを試しました。

そこからのみ、「psql 10.1」と([]内は明らかにデフォルト値です)を含むWindows cmdウィンドウを取得します。

Server [localhost]: I enter localhost; 
Database [postgres]: I enter postgres; 
Port [5432]: I enter 5432; 
Username [postgres]: I enter postgres; 
Password for user postgres: I enter the password which is "a".

そこから、Windowsコードページとは異なるコンソールコードページに関する警告が表示されますが、psqlプロンプトが表示されます

postgres=#

そしてそれはうまくいきます。

一方、上記の最初の戦略では、「パスワード:」のみを取得し、実際のパスワード(「a」)を入力した後、「致命的」なエラー「ユーザー「A」のパスワード認証に失敗しました」 。

インストール時に、ユーザー「A」ではなく、パスワード「a」でスーパーユーザー「postgres」を作成しました。一方、私はユーザー "A"であり、これは私のWindows管理者(!)アカウント(自分のPCには自分以外のユーザーはいない)であり、通常表示されるcmdプロンプト( "C:\ Users\A>")です。 (しかし、予想通り)プロンプト "C:>"からpsql.exeへの完全なパスを入力しても、異なる結果はありません。

だから私の問題はこれに帰着します:スタートメニュー内からトリガーされると、psql.exeは(上記のように)正しく答えることができるすべての質問を私に尋ねるので正しく機能しますが、cmdからの完全なパスで開始するとウィンドウ(両方のフルパスが試行され、 ""で囲まれていることは言うまでもありません)、 "パスワード"を要求するだけで、一部の "ユーザーA"に対してはそのパスワードが間違っていることを通知します。

また、スタートメニュー内から(機能している)psql.exeへの完全なパスはC:\ProgramData\Microsoft\Windows\Start Menu\Programs\PostgreSQL 10\psql.exeであり、cmdウィンドウでそれを実行しようとすると、「(パス)は内部として認識されません。または外部コマンド、操作可能なプログラムまたはバッチファイル。 "そこにあるので、それは" SQLシェル(psql).lnk "であり、そのプロパティは次のとおりです。"ターゲット: "C:\ Program Files\PostgreSQL\10\scripts\runpsql 。コウモリ""。

これが解決策です。以下の私の答えを参照してください。

10
pgny

一部のpsql.exeファイルは実行しませんが、ファイルC:\ Program Files\PostgreSQL\10\scripts\runpsql.batをプログラムで実行します。 AHKから:

「C:\ Program Files\PostgreSQL\10\scripts\runpsql.bat」を実行します

次に、正しい質問(上記を参照)を尋ね、正しく回答すると、psqlコマンドのプロンプトを表示する汎用のWindowsコマンドウィンドウが表示されます。

8
pgny

コマンドプロンプトを最初に表示(Winkey+R)、次にC:\Program Files\PostgreSQL\10\bin\psql.exeと入力し、Enterキーを押してパスワードを入力します。これは、エラーが発生した後にpsql.exeを閉じなかった場合とは異なります。

エラーが表示されたら、注意深く読み、SOまたはgoogle(または手動のドキュメント)で解決策を探してください。それでも失敗する場合は、別の質問を投稿してください。

1
Vao Tsun