Почему мое приложение golang не возвращает записей Postgres, если оно скомпилировано без ошибок и не возвращает ошибок? - PullRequest
0 голосов
/ 19 декабря 2018

Ситуация выглядит так: https://pasteboard.co/HSsFIgn.png

У меня PostgreSQL portable 10.1 и golang 1.10.2 portable.Я написал простую программу для извлечения данных из базы данных, и я не получил ответа Код такой: у меня нет ошибок компиляции, я могу запустить dbapp.exe и ничего не получаю, пожалуйста, смотрите верхний вставленный рисунок или код ниже: Спасибо залюбые намеки.

package main

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

const (
    DB_USER     = "postgres"
    DB_PASSWORD = ""
    DB_NAME     = "golang"
)

func main() {
    dbinfo := fmt.Sprintf("user=%s password=%s dbname=%s sslmode=disable",
        DB_USER, DB_PASSWORD, DB_NAME)
    db, err := sql.Open("postgres", dbinfo)
    checkErr(err)
    defer db.Close()
    var (
        id int
        name string
    )
    rows, err := db.Query("select id, song from music where id = 1")
    if err != nil {
        log.Fatal(err)
    }
    defer rows.Close()
    for rows.Next() {
        err := rows.Scan(&id, &name)
        if err != nil {
            log.Fatal(err)
        }
        log.Println(id, name)
    }
    err = rows.Err()
    if err != nil {
        log.Fatal(err)
    }
}

func checkErr(err error) {
    if err != nil {
        fmt.Println(err)
        panic(err)
    }
}

1 Ответ

0 голосов
/ 19 декабря 2018

Решением является sql.Открытая строка, она была сломана или что-то, теперь это работает так:

package main
    import (
        "database/sql"
        "fmt"
        _ "github.com/lib/pq"
        "log"
        )
    func main() {
        //necessary to change sql.Open strings
        db, err := sql.Open("postgres", "user=postgres dbname=golang port=5432 sslmode=disable")
        checkErr(err)
        defer db.Close()
        var (
            id int
            name string
        )
        rows, err := db.Query("select id, song from music where id = 1")
        if err != nil {
            log.Fatal(err)
        }
        defer rows.Close()
        for rows.Next() {
            err := rows.Scan(&id, &name)
            if err != nil {
                log.Fatal(err)
            }
            log.Println(id, name)
        }
        err = rows.Err()
        if err != nil {
            log.Fatal(err)
        }
    }
    func checkErr(err error) {
        if err != nil {
            fmt.Println(err)
            panic(err)
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...