PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

panic:sql:espera 1 argumentos de destino em Scan, não golang, pq, sql


A consulta retorna um campo por linha. O código está escaneando para três. Talvez você queira algo como:
err := db.QueryRow("SELECT data->>'id', data->>'type', data->>'title' FROM message WHERE data->>'id'=$1", id).Scan(m.Id, m.Type, m.Title)

Além disso, passe ponteiros para os valores:
err := db.QueryRow("SELECT data->>'id', data->>'type', data->>'title' FROM message WHERE data->>'id'=$1", id).Scan(&m.Id, &m.Type, &m.Title)

Outra opção é buscar os dados como um único campo e decodificar o resultado com o pacote 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
}