PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Panik:sql:1 Zielargumente in Scan erwartet, nicht golang, pq, sql

Die Abfrage gibt ein Feld pro Zeile zurück. Der Code scannt nach drei. Vielleicht möchten Sie etwas wie:

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

Übergeben Sie außerdem Zeiger auf die Werte:

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

Eine andere Option besteht darin, die Daten als einzelnes Feld abzurufen und das Ergebnis mit dem encoding/json-Paket zu decodieren.

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
}