I'm trying to make a get function that i pass an Id.
I have a column called "Salary" that i defined as DECIMAL (13,2)
In Go i try to define this property in struct in int, int68, big.Rat but when i make a scan i receive:
2019/07/13 00:05:25 sql: Scan error on column index 6, name "Salary": unsupported Scan, storing driver.Value type []uint8 into type *big.Rat
My get function:
func (app *App) getFuncionary(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
Id, ok := vars["Id"]
if !ok {
log.Println("No one id found")
}
dbdata := &Funcionary{}
err := app.Database.QueryRow("SELECT Id,Data,xx,xxy,xxxx,xxxxx,Salario,xxxxxx FROM `funcionarys` WHERE Id = ?", Id).Scan(&dbdata.Id, &dbdata.Data, &xx, &xxy, &xxxx, &dbdata.xxxxx, &dbdata.Salario, &dbdata.xxxxxx)
if err != nil {
log.Fatal(err)
}
log.Println("You fetched a thing!")
w.WriteHeader(http.StatusOK)
if err := json.NewEncoder(w).Encode(dbdata); err != nil {
panic(err)
}
}
My database connection string don't have parsetime:
connectionString := fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8mb4&collation=utf8mb4_unicode_ci&multiStatements=true", user, password, serverName, dbName)
You should be able to use the NullFloat64
type (a float64 that may be null), as in here
var dec sql.NullFloat64
row.Scan(&dec)