2014-09-29 40 views
0

我正在Go和PostgreSQL中使用两台不同的计算机创建Web应用程序。两台电脑上的设置都是一样的(Ubuntu和Go和PostgreSQL的最新版本)。问题是我无法让我的应用程序连接到笔记本电脑上的数据库。通过pq(Go)连接到PostgreSQL数据库会返回一个“错误的连接”错误

我使用这段代码:

func (db *Database) Dial(user string, password string, dbname string) { 
    var err error 
    db.Conn, err = sql.Open("postgres", "user="+user+" password="+password+" dbname="+dbname+" sslmode=require") 
    if err != nil { 
     fmt.Println("Connection to " + dbname + " not possible!") 
     log.Fatal(err) 
    } 
    err = db.Conn.Ping() 
    if err != nil { 
     fmt.Println("Ping to " + dbname + " not possible!") 
     fmt.Println(err) 
    } 
} 

我也得到:

坪MY_DATABASE不可能的!

司机:不好的连接

我发现了同样的错误如此多的问题,但我没有发现任何解决方案,能够解决我的情况。

此外,在我的笔记本电脑,就像我的台式电脑上,有用户Postgres的,我可以通过PSQL连接到数据库,所以守护进程被激活,密码是正确的。我在两台计算机上使用完全相同的设置和代码。

我的问题是:如何获得有关错误的更多信息?我觉得“不好的联系”太模糊了。我相信多一点的信息会对我有很大的帮助。

另外,你有一个想法会导致错误?

更新

PostgreSQL的日志中这样说:

2014年9月29日14点23分26秒EDT FATAL:密码验证失败的用户 “Postgres的”

2014- 09-29 14:23:26 EDT详情:连接匹配pg_hba.conf第92行:“host all all 127.0.0.1/32 md5”

但我仔细检查了密码,它应该很好。我也可以登录为posgres用户,运行psql命令并执行查询。

+0

如果你设置sslmode = disable,会发生什么? – 2014-09-29 16:49:25

+0

显示完全相同的错误。 – 2014-09-29 17:05:05

+0

有没有什么有用的postgres日志中出现? – urandom 2014-09-29 18:18:59

回答

1

我找到了解决这个问题的方法。

我登录为postgres并运行psql postgres。换句话说,我连接到postgres数据库。然后我运行命令\密码并输入一个新密码。

我输入了与我一直使用的完全相同的密码,从某种程度上来说它现在可以工作。

问题已解决,但如果有人对可能导致原因有所了解,我很感兴趣。也许它与密码到期有关?

+0

您的密码一定是错误的,你是每次输入它还是使用主机凭证或'psql'?我一直在使用Go和PostgreSQL进行各种配置,我从来没有遇到过这种情况。 – 2014-09-30 01:40:45

+0

我输入了它每次我想要使用* psql *。 – 2014-09-30 01:50:52

+0

超级奇怪!如果你想知道发生了什么或者你可以重现它,请发表评论 – 2014-09-30 01:58:54