Golang Postgres连接字符串未打开返回null

时间:2016-06-29 02:47:23

标签: postgresql go

我确信connectionString有一些东西,因为我给出的值与我在Java中用于登录同一数据库的值相同。这是我的代码

package main

import(
    "fmt"
    "database/sql"
    _ "github.com/lib/pq"

    "log"
)




func main() {


    db, err := sql.Open("postgres", "user=postgres password=password dbname=name sslmode=disable")

    if err != nil {
        log.Fatal(err)
    }

     defer db.Close()
    age := 21
    rows, err := db.Query("SELECT city FROM streams WHERE id=69", age)

    fmt.Println(rows)

}

我正在使用我在这里找到的https://godoc.org/github.com/lib/pq我的postgres版本是9.4而我的Go版本是1.6。我不知道为什么会这样。

2 个答案:

答案 0 :(得分:2)

您可以添加ping代码并查看返回的错误吗?

package main

import (
    "fmt"
    "database/sql"
    _ "github.com/lib/pq"

    "log"
)

func main() {

    db, err := sql.Open("postgres", "user=postgres password=password dbname=name sslmode=disable")

    if err != nil {
        log.Fatal(err)
    }

    err = db.Ping()
    if err != nil {
        log.Fatal(err)
    }

    defer db.Close()
    age := 21
    rows, err := db.Query("SELECT city FROM streams WHERE id=$1", age)

    fmt.Println(rows)

}

答案 1 :(得分:1)

你的

 rows, err := db.Query("SELECT city FROM streams WHERE id=69", age)

必须是:

 rows, err := db.Query("SELECT city FROM streams WHERE id = ?", age)

 defer db.Close()

执行查询后继续。