Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql pg_dump:[archiver(db)]与数据库的连接;mydb“;失败:致命:数据库“;mydb“;不存在_Sql_Postgresql_Heroku_Command Line_Pg Dump - Fatal编程技术网

Sql pg_dump:[archiver(db)]与数据库的连接;mydb“;失败:致命:数据库“;mydb“;不存在

Sql pg_dump:[archiver(db)]与数据库的连接;mydb“;失败:致命:数据库“;mydb“;不存在,sql,postgresql,heroku,command-line,pg-dump,Sql,Postgresql,Heroku,Command Line,Pg Dump,好的,我已经跑了以下几步: $ 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

好的,我已经跑了以下几步:

$ 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
为什么会发生这种情况?我能做些什么来解决它


谢谢

您严重误解了PostgreSQL的工作原理

app_db.sql
不是数据库,而是数据库转储。描述数据库中数据的一系列文本命令,可通过回放创建数据库

它不像Microsoft Access
.dbx
文件或SQLite3数据库文件,后者是存储在单个文件中的数据库,可以直接操作。使用PostgreSQL数据库的唯一方法是通过与PostgreSQL server的客户机/服务器连接,后者将实际数据库内容存储在与系统相关的位置,如
/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 

我强烈建议您阅读和用户手册。

关于“数据库”mydb“不存在”有什么不清楚的地方?不清楚数据库确实存在,并且它在同一文件夹中,所以我想知道为什么它说数据库不存在,然后在
psql
中发布
\l
命令的输出\l的输出?那是什么?这是psql中的一个命令: