5

わかりました、私が実行したこれらの指示に従ってください:

$ PGPASSWORD=mypassword pg_dump -Fc --no-acl --no-owner -h localhost -U myuser mydb > mydb.dump

データベース(app_db.sql)と同じフォルダーにありますが、取得し続けます:

pg_dump: [archiver (db)] connection to database "mydb" failed: FATAL:  database "mydb" does not exist

なぜこれが起こっているのですか、どうすれば解決できますか?

ありがとう

4

1 に答える 1

4

あなたはPostgreSQLがどのように機能するかを批判的に誤解しました。

app_db.sqlはデータベースではなく、データベースダンプです。データベースを作成するために再生できるデータベース内のデータを説明する一連のテキストコマンド。

これは、MicrosoftAccess.dbxファイルやSQLite3データベースファイルとは異なります。データベースは、直接操作できる単一のファイルに格納されています。PostgreSQLデータベースを操作する唯一の方法は、PostgreSQLサーバーへのクライアント/サーバー接続を介することです。PostgreSQLサーバーは、/var/lib/pgsql直接操作する必要がないようなシステム依存の場所に実際のデータベースの内容を保存します。

データベースダンプを使用するには、次のコマンドを使用して、データベースダンプを新しい空のデータベースに復元する必要があります。psql

$ createdb mydb
$ psql -f app_db.sql mydb

上記のとおりに実行しようとすると、パーミッションエラーで失敗する可能性があります。自分でユーザーを作成し、そのユーザーにの所有権を付与し、システム設定に応じて自分が認証できるようにmydb編集する必要があります。pg_hba.conf

UNIXログイン名を持つユーザーのより現実的な例は次のbobとおりです。

$ sudo -u postgres createuser bob
$ sudo -u postgres createdb -O bob mydb
$ psql -f dpp_db.sql -1 -v ON_ERROR_STOP=1 mydb 

PostgreSQLチュートリアルとユーザーマニュアルを読むことを強くお勧めします。

于 2013-01-26T06:41:42.477 に答える