我之前只使用过MySQL。 Postgres对我来说有点不同。我试图使用Postgres.app for OSX。我有一个来自我们的开发服务器的数据库转储,我想创建正确的用户角色并将数据库导入我的本地机器,这样我就可以在家进行开发(无法远程访问数据库)。
我认为我已经创建了用户。 \ du 显示具有CreateDB权限的相应用户。然后我使用 \ i~ / dump.sql ,它似乎导入了数据库。但是,当我使用 \ l 列出数据库时,它并没有显示出来。所以我尝试使用 psql -U 用户名 登录,但随后它告诉我" 致命:数据库用户名不存在。"这不是正确的登录开关吗?它是帮助说的。
我对简单的事情感到沮丧,所以我感谢任何帮助。使用Postgres.app,如何使用密码创建必要的用户并导入数据库?谢谢你的帮助!
答案 0 :(得分: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转储。他们使用 lot 更容易使用,pg_restore
比使用psql
恢复转储要好得多。
答案 1 :(得分:1)
-U <username>
对于使用 psql 指定用户名是正确的,但最后一个标记是此处的数据库名称。它解释为您没有指定用户,数据库是用户名。尝试添加数据库名称,即psql -U username database
。
有关无数开关 psql 支持的更多信息,请参阅psql doc。