我正在使用两台不同的计算机在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 命令并执行查询。
答案 0 :(得分:1)
我找到了解决此问题的方法。
我以 postgres 登录并运行 psql postgres 。换句话说,我连接到 postgres 数据库。然后我运行命令\密码并输入一个新密码。
我输入了自开始以来一直使用的完全相同的密码,不知怎的现在它可以正常工作。
问题已经解决,但如果有人知道原因可能是什么,我很感兴趣。也许它与密码过期有关?