2017-07-14 83 views
0

我刚刚创建了一个新应用程序并安装了'pg'gem,创建了一个psql用户和数据库,并创建了一个database.yml文件。但是,服务器不会接受我的密码,即使它是正确的。Postgresql将不接受密码

下面是我跑到我创建用户和数据库的命令:

Project$ sudo -i -u postgres 
[email protected]:~$ psql 
postgres=# CREATE USER Project WITH PASSWORD 'Project' CREATEDB; 
postgres=# CREATE DATABASE Project OWNER Project; 

,所有经历了没有任何错误。然后,我创建了以下database.yml文件:

development: 
    adapter: postgresql 
    database: Project 
    username: Project 
    password: Project 
    host: localhost 
    pool: 5 
    timeout: 5000 

test: 
    adapter: postgresql 
    database: Project 
    username: Project 
    pool: 5 
    timeout: 5000 

production: 
    adapter: postgresql 
    database: Project 
    username: Project 
    pool: 5 
    timeout: 5000 

但是,当我开始我的Rails服务器,并尝试加载一个网页,我得到这个错误:

PG::ConnectionBad 
FATAL: password authentication failed for user "Project" FATAL: password authentication failed for user "Project" 

Extracted source (around line #56): 

#54 ### Convenience alias for PG::Connection.new. 
#55 def self::connect(*args) 
#56   return PG::Connection.new(*args) #line 56 
#57 end 

我已经尝试了多种不同的密码和用户/数据库名称,我试图让用户成为超级用户,但我总是得到相同的结果。我已经完成了所有这一切,它一直工作。这是怎么回事??

+0

你可以试试小写用户名吗?在PostgresSQL中使用大写用户名非常棘手。您没有引用名称,而是实际创建了用户“项目”而不是“项目”。 –

+0

@TomaszMyrta Wooow,是的,就是这样。谢谢。从来不会猜到案件会起作用。 –

+0

“pg_hba.conf”文件中为该用户分配的认证方法是什么? – Nicarus

回答

1
postgres=# CREATE USER Project WITH PASSWORD 'Project' CREATEDB; 

此代码创建用户“项目”而不是“项目”。如果你真的想在用户名中使用大写字母,你必须双引号他们:

postgres=# CREATE USER "Project" WITH PASSWORD 'Project' CREATEDB; 

这同样与表和列名 - 无论是创建和查询他们。

+0

这太疯狂了,如果是那种挑剔的话,我会认为他们会包括一些关于案件的事情。谢谢! –

+0

您可以在文档中找到更多信息 - SQL语法/词法结构/标识符和关键字。 –

0

尝试从development:组中删除host: localhost。过去我遇到过类似的问题,这为我解决了问题。