PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

panique :sql :1 arguments de destination attendus dans Scan, pas golang, pq, sql

La requête renvoie un champ par ligne. Le code scanne pour trois. Peut-être que vous voulez quelque chose comme :

err := db.QueryRow("SELECT data->>'id', data->>'type', data->>'title' FROM message WHERE data->>'id'=$1", id).Scan(m.Id, m.Type, m.Title)

Passez également des pointeurs vers les valeurs :

err := db.QueryRow("SELECT data->>'id', data->>'type', data->>'title' FROM message WHERE data->>'id'=$1", id).Scan(&m.Id, &m.Type, &m.Title)

Une autre option consiste à récupérer les données dans un seul champ et à décoder le résultat avec le package encoding/json.

var p []byte
err := db.QueryRow("SELECT data FROM message WHERE data->>'id'=$1", id).Scan(&p)
if err != nil {
    // handle error
}
var m Message
err := json.Unmarshal(p, &m)
if err != nil {
    // handle error
}