登录
首页 >  Golang >  Go问答

QueryRow()在表中有数据时为何返回空字符串?

来源:stackoverflow

时间:2024-03-25 20:21:35 122浏览 收藏

使用QueryRow()方法从 PostgreSQL 表中查询数据时,如果表中有数据,却返回空字符串,可能是因为连接参数中未禁用 SSL 模式。解决方法是显式禁用 SSL 模式,例如在连接字符串中添加“?sslmode=disable”。

问题内容

我正在尝试从 postgresql 数据库表中查询一行。

func getprefix(serverid int64, db *sql.db) string {
    var prefix string
    err := db.queryrow("select prefix from servers where serverid = 1234").scan(&prefix)
    if err != nil {
        fmt.println(err.error())
    }
    spew.dump(prefix)
    fmt.println("prefix is " + prefix)
    return prefix
}

显然,变量prefix是一个空字符串,但是当我在数据库中查询它时,它不为空

You are now connected to database "mewbot" as user "postgres".
mewbot=# select * from servers;
 serverid | prefix
----------+--------
     1234 | ;
(1 row)


mewbot=#

我的问题是,为什么它应该返回一个空字符串,而它应该是 ; 已进行所有检查;我已确保已连接到同一个数据库等


解决方案


显然它不起作用,因为我的服务器上禁用了 SSL 模式,但我试图在未指定它被禁用的情况下进行连接。

postgres://postgres:7890@localhost:5432/mewbot 更改为 postgres://postgres:7890@localhost:5432/mewbot?sslmode=disable 解决了我的问题。

今天关于《QueryRow()在表中有数据时为何返回空字符串?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>