通过pq(Go)连接到PostgreSQL数据库会返回“错误连接”错误

时间:2014-09-29 16:43:31

标签: postgresql go

我正在使用两台不同的计算机在Go和PostgreSQL中创建一个Web应用程序。两台计算机上的设置相同(Ubuntu与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)
    }
}

我得到了:

  

无法ping到my_database!

     

驱动程序:连接错误

我在SO上发现了很多关于同样错误的问题,但我找不到解决方案来解决我的问题。

此外,在我的笔记本电脑上,就像在我的桌面计算机上,有一个用户 postgres ,我可以通过 psql 连接到数据库,因此守护程序处于活动状态密码是对的。我在两台计算机上使用完全相同的设置和代码。

我的问题是:如何获取有关错误的更多信息?我发现"连接错误"太模糊了我确信更多的信息对我有很大的帮助。

另外,您是否知道会导致错误?

更新

PostgreSQL日志说明了这一点:

  

2014-09-29 14:23:26 EDT致命:用户密码验证失败" postgres"

     

2014-09-29 14:23:26 EDT DETAIL:连接匹配pg_hba.conf第92行:"主持所有127.0.0.1/32 md5"

但我仔细检查了密码,它应该没问题。我也可以以 posgres 用户身份登录,运行 psql 命令并执行查询。

1 个答案:

答案 0 :(得分:1)

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

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

我输入了自开始以来一直使用的完全相同的密码,不知怎的现在它可以正常工作。

问题已经解决,但如果有人知道原因可能是什么,我很感兴趣。也许它与密码过期有关?