私はMac用のPostgreSqlアプリを使っています( http://postgresapp.com/ /)。私は過去に他のマシンでそれを使用しました、しかし、それは私のMacBookにインストールするとき私に若干の問題を与えています。私はアプリケーションをインストールしました、そして私は走りました:
psql -h localhost
それは戻ります:
psql: FATAL: database "<user>" does not exist
探しているデータベースを作成するためにコンソールを実行することすらできないようです。実行したときに同じことが起こります。
psql
または、アプリケーションのドロップダウンメニューからpsqlを起動した場合
機械統計:
OSX 10.8.4
psql(PostgreSQL)9.2.4
任意の助けは大歓迎です。
私は自作でPostgreSqlをインストールしようとしましたが、同じ問題が発生します。私はまた、アプリケーションのドキュメントページを読んでいます:
Postgres.appが最初に起動すると、$ USERデータベースが作成されます。これは、何も指定されていない場合のpsqlのデフォルトデータベースです。デフォルトのユーザーはパスワードなしの$ USERです。
そのため、アプリケーションは$ USERを作成していないように見えますが、インストール - >アンインストール - 再インストールを何度か繰り返したので、私のマシンでは問題ないはずです。
私は答えを見つけましたが、それがこのスレッドで答えたユーザーとしてどのように機能するか正確にはわかりません - > PostgresqlをMacで起動する:データベース "postgres"が存在しません 追いかけませんでした。 psqlを開くために次のコマンドを使いました。
psql -d template1
これが機能する理由について誰かが説明を提供できるようになるまで、私はこれを未回答のままにします。
パッケージマネージャが$ userという名前のデータベースを作成できなかったようです。その理由
psql -d template1
template1はpostgres自身によって作成されたデータベースであり、すべてのインストールに存在することがあなたのために働きます。あなたは明らかにtemplate1にログインすることができるので、あなたはデータベースによってあなたに割り当てられた何らかの権利を持っていなければなりません。シェルプロンプトでこれを試してください。
createdb
それから、もう一度ログインできるかどうかを確認します。
psql -h localhost
これは単にあなたのログインユーザーのためのデータベースを作成するでしょう、私はあなたが探しているものだと思います。 createdbが失敗するなら、あなたはあなた自身のデータベースを作るための十分な権利を持っていません、そしてあなたは自作パッケージを修正する方法を考え出す必要があるでしょう。
端末から、コマンドプロンプトウィンドウでコマンドを実行するだけです。 (psql内にはありません)。
createdb <user>
そしてpostgresをもう一度実行してみてください。
デフォルトでは、postgresはあなたのユーザと同じ名前のデータベースへの接続を試みます。このデフォルトの動作を防ぐには、単にユーザーとデータベースを指定します。
psql -U Username DatabaseName
Sudo -i -u postgres
createuser --interactive
createdb <username_from_step_3>
psql
と入力してエラーがなくなったことを確認します。psql (x.x.x) Type "help" for help.
を示すはずですデフォルトのtemplate1データベースを使用してログインします。
#psql -d template1
#template1=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+---------+----------+-------------+-------------+---------------------
postgres | gogasca | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | gogasca | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/gogasca +
| | | | | gogasca=CTc/gogasca
template1 | gogasca | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/gogasca +
| | | | | gogasca=CTc/gogasca
(3 rows)
UserIdを使ってデータベースを作成します。
template1=# CREATE DATABASE gogasca WITH OWNER gogasca ENCODING 'UTF8';
CREATE DATABASE
終了してから再度ログインします
template1=# \q
gonzo:~ gogasca$ psql -h localhost
psql (9.4.0)
Type "help" for help.
gogasca=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+---------+----------+-------------+-------------+---------------------
gogasca | gogasca | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
postgres | gogasca | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | gogasca | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/gogasca +
| | | | | gogasca=CTc/gogasca
template1 | gogasca | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/gogasca +
| | | | | gogasca=CTc/gogasca
(4 rows)
私はMac上でpostgresqlを開こうとしたとき私は同じエラーに直面しました
psql: FATAL: database "user" does not exist
私はそれを解決するためにこの簡単なコマンドを見つけました:
method1
$ createdb --owner=postgres --encoding=utf8 user
とタイプ
psql
方法2:
psql -d postgres
このエラーは、環境変数PGDATABASEが存在しないデータベースの名前に設定されている場合にも発生する可能性があります。
OSXで、Postgress.appメニューからpsqlを起動しようとしたときに次のエラーが表示されました。
psql: FATAL: database "otherdb" does not exist
エラーを解決するには、export PGDATABASE=otherdb
から~/.bash_profile
を削除します。
さらに、PGUSERがあなたのユーザ名以外に設定されていると、次のエラーが発生します。
psql: FATAL: role "note" does not exist
解決策はexport PGUSER=notme
から~/.bash_profile
を削除することです。
同じ問題があった場合は、単純なpsql -d postgres
がそれを行いました(端末にコマンドを入力します)。
この質問は検索結果の最初の質問なので、タイトルが重複しないように、ここでは別の問題に対して別の解決策を示します。
データベースを指定せずにpsql
でクエリファイルを実行すると、同じエラーメッセージが表示されることがあります。 postgresqlにはuse
ステートメントがないので、コマンドラインでデータベースを指定する必要があります。例えば:
psql -d db_name -f query_file.sql
最初のデータベースは、データ記憶領域の初期化時にinitdbコマンドによって常に作成されます。このデータベースはpostgresと呼ばれます。
そのため、特定のOS/postgresqlディストリビューションがこれとは異なる動作をする場合、それは確かにデフォルト/標準ではありません(openSUSE 13.1のinitdb
がDB "postgres"を作成し、 "<user>"は作成しないことを確かめます)。要するにpsql -d postgres
は "postgres"以外のユーザを使うときに使われることが期待されています。
明らかに、ユーザーのような名前のDBを作成するためにcreatedb
を実行するという、受け入れられた答えも同様に機能しますが、余分なDBを作成します。
jDBCドライバの使用に問題があったので、URLのホスト名の後にデータベースを追加する必要があります(おそらく使用するツールによっては冗長になります)。jdbc:postgres://<Host(:port)>/<db-name>
詳細はここに文書化されています: http://www.postgresql.org/docs/7.4/static/jdbc-use.html#JDBC-CONNECT
まず最初に、現在使用しているものと同じ名前のデータベースを作成して、デフォルトのデータベースを使用してdbの名前を明示的に宣言せずに新しいテーブルを作成する場合のエラーを防ぐのに役立ちます。
"skynotify"をあなたのユーザー名に置き換えてください。
psql -d postgres -c "CREATE DATABASE skynotify ENCODING 'UTF-8';"
-dこの対話型セッション中に明示的にdb名を含まないSQL文のデフォルトとして使用するデータベースを明示的に宣言します。
あなたのPostgresQLサーバが持っているものの明確な写真を取得するための基本。
対話式にpsqlを使用するには、既存のデータベースに接続する必要があります。幸い、psqlにデータベースのリストを尋ねることができます。
psql -l
。
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
----------------------------------+-----------+----------+-------------+-------------+-------------------
skynotify | skynotify | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
myapp_dev | skynotify | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
postgres | skynotify | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
Ruby-getting-started_development | skynotify | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | skynotify | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/skynotify +
| | | | | skynotify=CTc/skynotify
template1 | skynotify | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/skynotify +
| | | | | skynotify=CTc/skynotify
(6 rows)
これは対話型コンソールを起動するのではなく、テキストベースのテーブルを端末に出力するだけです。
別の答えが言うように、postgresは常に作成されているので、コンソールを他のデータベースで動作させたいときには、それをフェイルセーフデータベースとして使用するべきです。表示されない場合は、データベースを一覧表示してからいずれかを使用します。
同様に、データベースからテーブルを選択します。
psql -d postgres -c "\dt;"
私の "postgres"データベースにはテーブルがありませんが、テキストベースのテーブルを端末に出力するデータベース(標準出力)はありません。
完全を期すために、テーブルからすべての行を選択することもできます。
psql -d Ruby-getting-started_development -c "SELECT * FROM widgets;"
。
id | name | description | stock | created_at | updated_at
----+------+-------------+-------+------------+------------
(0 rows)
返された行がゼロであっても、フィールド名がわかります。
テーブルに12行以上ある場合、または確信が持てない場合は、データベース内のデータ量を理解するために、行数から始めるほうが便利です。
psql -d Ruby-getting-started_development -c "SELECT count(*) FROM widgets;"
。
count
-------
0
(1 row)
そして、その「1行」はあなたを混乱させないでください、それは単にクエリによって返される行数を表しますが、1行はあなたが望むカウントを含んでいます、この例では0です。
注:所有者を定義せずに作成されたデータベースは、現在のユーザーが所有します。
私はこれらの解決策のいくつかを試してみましたが、それらはあまりうまくいきませんでした。
結局私のエラーは次のとおりです。
FATAL:ユーザーのパスワード認証に失敗しました
次のコマンドを実行したとき:psql
それで、私はこれら二つのコマンドを走らせました:
dropdb()
createdb()
注:これで will dbは削除されますが、私はそれを必要としていなかったので、何らかの理由でpqslにアクセスできなくなったので、削除して再作成しました。それからpsql
はまた働きました。
既存のスーパーユーザーを介してpostgresに接続します。
あなたがpostgresに接続しているユーザーの名前でデータベースを作成します。
create database username;
今すぐユーザー名で接続してみてください