sql >> Databasteknik >  >> RDS >> PostgreSQL

panic:sql:förväntat 1 destinationsargument i Scan, inte golang, pq, sql

Frågan returnerar ett fält per rad. Koden skannar efter tre. Du kanske vill ha något som:

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

Skicka också pekare till värdena:

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

Ett annat alternativ är att hämta data som ett enda fält och avkoda resultatet med encoding/json-paketet.

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
}



  1. PostgreSQL ersätter HTML-entitetsfunktion

  2. Navigera från App A till App B med samma referenser - APEX 19.2

  3. Skiftlägeskänslig sökning i Django, men ignorerad i Mysql

  4. Fel:Parametertyp stöds inte i ADODB-koden för klassisk ASP