Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql DefaultServeMux中的SQL给出错误_Postgresql_Rest_Go - Fatal编程技术网

Postgresql DefaultServeMux中的SQL给出错误

Postgresql DefaultServeMux中的SQL给出错误,postgresql,rest,go,Postgresql,Rest,Go,我正在尝试在Go中使用RESTAPI。当查询放置在主处理程序中(显示在终端中)时,查询可以工作,但当移动到所需的处理程序时,浏览器中会出现错误 localhost:8080/您遇到的是变量阴影的典型情况 :=创建了一个新的db变量,该变量会隐藏您的包级别db变量。当包级别db变量保持为nil指针时,db的设置值仅存在于main函数的范围内,因此当您试图在索引处理程序中对nil执行方法调用时,会出现死机 Getuser处理程序工作的原因与DefaultServeMux无关,只是因为您没有尝试访问n

我正在尝试在Go中使用RESTAPI。当查询放置在主处理程序中(显示在终端中)时,查询可以工作,但当移动到所需的处理程序时,浏览器中会出现错误


localhost:8080/您遇到的是变量阴影的典型情况

:=
创建了一个新的
db
变量,该变量会隐藏您的包级别
db
变量。当包级别
db
变量保持为nil指针时,
db
的设置值仅存在于main函数的范围内,因此当您试图在索引处理程序中对
nil
执行方法调用时,会出现死机

Getuser处理程序工作的原因与DefaultServeMux无关,只是因为您没有尝试访问nil值的成员函数

解决此问题的方法是在主函数中预先声明
err
变量,并将
:=
更改为简单赋值
=

func main() {
// ...
    var err error
    // this will now correctly set your package level variable
    db, err = sql.Open("postgres", psqlInfo)
    if err != nil {
        log.Fatalln(err)
    }
// ...
}

错误发生在哪一行?另外,代码中索引函数
中的行的错误处理部分。下一步()
不完整,您可以检查并更正。请发布完整的错误日志。当您有
nil
指针时,经常会发生此错误。@pie-oh-pah-Done@vahdet“另外,代码中的行索引函数中的错误处理部分。Next()不完整,您可以检查并更正它。”有任何提示吗?您的全局
db
nil
。在Go
:=
中声明了一个新变量,因此主函数中的
db
与保持不变的全局
db
是不同的变量。然后,调用
db.Query的
index
处理程序正在对
*db
类型的
nil
值调用该方法。不是你想要的。你有没有去掉if err!=梅因的零?如果你正在处理你所有的错误,你就不应该这么做。在go中,您不能声明变量,也不能不使用它。仔细检查,看看它是否是其他语句的一部分
func main() {
// ...
    var err error
    // this will now correctly set your package level variable
    db, err = sql.Open("postgres", psqlInfo)
    if err != nil {
        log.Fatalln(err)
    }
// ...
}