3

我以前只使用过MySQL。Postgres 对我来说有点不同。我正在尝试将 Postgres.app 用于 OSX。我有一个来自我们的开发服务器的数据库转储,我想创建正确的用户角色并将数据库导入我的本地机器,这样我就可以在家进行开发(无法远程访问数据库)。

我已经创建了用户。\du显示具有 CreateDB 权限的相应用户。然后我使用了\i ~/dump.sql,它似乎已经导入了数据库。但是,当我使用\l列出数据库时,它不会出现。然后我尝试使用psql -U username 登录,但它告诉我“致命:数据库用户名不存在。 ”这不是登录的正确开关吗?求助者是这么说的。

我对一些简单的事情感到沮丧,所以我很感激任何帮助。使用 Postgres.app,如何使用密码创建必要的用户并导入数据库?谢谢你的帮助!

4

2 回答 2

2

听起来您可能将转储加载到您连接的数据库中。如果您在启动时没有指定数据库,psql它将是以您的用户名命名的数据库。不过,这在一定程度上取决于pg_dump创建转储文件时使用的选项。

尝试:

 psql -v ON_ERROR_STOP=1

 CREATE DATABASE mynewdb TEMPLATE template0 OWNER whateverowneruser;
 \c mynewdb
 \i /path/to/dump/file.sql

就个人而言,我建议始终使用pg_dump -Fc创建自定义格式转储而不是 SQL 转储。它们容易使用,并且pg_restorepsql用于恢复转储要好得多。

于 2014-09-30T01:26:51.260 回答
0

-U <username>使用psql指定用户名是正确的,但最后一个标记是此处的数据库名称。它解释您没有指定用户并且数据库是username。尝试在之后添加数据库名称,即psql -U username database.

有关psql支持的无数开关的更多信息,请参阅psql 文档。

于 2014-09-30T00:33:11.327 回答