Rya*_*ich 649 postgresql psql
我正在使用PostgreSql应用程序的mac(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
我会留下这个答案,直到有人可以解释为什么这样做.
Kir*_*bal 1084
您的包管理器似乎无法为您创建名为$ user的数据库.原因
psql -d template1
适合你的是template1是由postgres自己创建的数据库,并且存在于所有安装中.您显然可以登录到template1,因此您必须拥有数据库为您分配的一些权限.在shell提示符下尝试:
createdb
然后看看你是否可以再次登录
psql -h localhost
这将只为您的登录用户创建一个数据库,我认为这是您正在寻找的.如果createdb失败,那么您没有足够的权限来创建自己的数据库,并且您将不得不弄清楚如何修复自制软件包.
小智 158
从终端,只需在命令提示符窗口中运行命令.(不在psql里面).
createdb <user>
然后尝试再次运行postgres.
Ane*_*Dev 136
默认情况下,postgres尝试连接到与您的用户同名的数据库.要防止此默认行为,只需指定用户和数据库:
psql -U Username DatabaseName 
小智 53
sudo -i -u postgrescreateuser --interactivecreatedb <username_from_step_3>psql在命令提示符处输入以下命令确认错误消失.psql (x.x.x) Type "help" for help.gog*_*sca 40
使用默认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)
Cri*_*tea 24
步骤1:
psql -d template1
现在你应该在 psql 终端上
第2步:
CREATE DATABASE username;
确保在数据库名称后使用分号 (;);
可选:在 psql 终端上键入\ls或\l列出所有数据库;
步骤3:
psql -h localhost
现在您应该已连接;
Din*_*apa 18
当我尝试在mac上打开postgresql时,我遇到了同样的错误
psql: FATAL:  database "user" does not exist
我发现这个简单的命令来解决它:
方法1
$ createdb --owner=postgres --encoding=utf8 user
并输入
 psql
方法2:
psql -d postgres
Sup*_*ova 17
Post installation of postgres, in my case version is 12.2, I did run the below command createdb.
$ createdb `whoami`
$ psql
psql (12.2)
Type "help" for help.
macuser=# 
不确定它是否已经添加在答案中,Anatolii Stepaniuk 的答案非常有帮助,如下所示。
psql -U Username postgres # when you have no databases yet
由于这个问题是搜索结果中的第一个问题,无论如何我都会在这里为不同的问题提供不同的解决方案,以免出现重复的标题。
在psql未指定数据库的情况下运行查询文件时,可能会出现相同的错误消息。由于usepostgresql中没有语句,我们必须在命令行中指定数据库,例如:
psql -d db_name -f query_file.sql
小智 5
如果环境变量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.
正如createdb 文档所述:
第一个数据库总是在数据存储区初始化时通过initdb命令创建的……这个数据库叫做postgres。
因此,如果某些 OS/postgresql 发行版以不同方式执行此操作,则它肯定不是默认/标准(只是验证了initdb在 openSUSE 13.1 上创建了数据库“postgres”,而不是“<user>”)。长话短说,psql -d postgres预计在使用“postgres”以外的用户时使用。
显然接受的答案,运行createdb以创建一个像用户一样命名的数据库,也可以工作,但会创建一个多余的数据库。
| 归档时间: | 
 | 
| 查看次数: | 301264 次 | 
| 最近记录: |