首页 > 解决方案 > 为什么 QueryRow().Scan() 在表中不为空时返回空字符串?

问题描述

我正在尝试从 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=#

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

标签: sqlpostgresqlgo

解决方案


显然它不起作用,因为我的服务器上禁用了 SSL 模式,但我试图连接但没有指定它被禁用。

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


推荐阅读