I'm receiving the following error when querying a row in an sqlite3 database:
sql: Scan error on column index 3: converting string "" to a int64: strconv.ParseInt: parsing "": invalid syntax
The query itself works, as it is able to return the queried data. I should note that each row in the database contains several columns with NULL data (only the Id and Email columns are populated). I am struggling to understand why the err occurs and how to resolve it.
The SQL table has the following nine columns:
`0,Id,INTEGER,0,,1 1,Email,TEXT,0,,0 2,Name,TEXT,0,,0 3,Rsvp,INTEGER,0,,0 4,Guests,INTEGER,0,,0 5,Meal0,INTEGER,0,,0 6,Meal1,INTEGER,0,,0 7,Comments,TEXT,0,,0 8,ModifiedAt,TEXT,0,,0` which are defined in server.go with the following struct (I added the sql.NullString to handle the empty columns):
type User struct { Id int Email string Name sql.NullString Rsvp sql.NullInt64 Guests sql.NullInt64 Meal0 sql.NullInt64 Meal1 sql.NullInt64 Comments sql.NullString ModifiedAt sql.NullString } the query is from the following handler:
func Rsvp1Handler(w http.ResponseWriter, r *http.Request) { email := r.URL.Path[len("/rsvp/"):] var user User err := userStatement.QueryRow(email).Scan(&user.Id, &user.Email, &user.Name, &user.Rsvp, &user.Guests, &user.Meal0, &user.Meal1, &user.Comments, &user.ModifiedAt) switch { case err == sql.ErrNoRows: log.Println("No user with that ID.") w.Header().Set("Content-Type", "text/plain") fmt.Fprintf(w, "Email address not found: %s", email) case err != nil: log.Println(err) fmt.Fprintf(w, "Database error:\n", err) default: log.Println("Query success. Email address: ", email) w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(&user) } which relies on the following constant and var:
const userSelect = "SELECT * FROM rsvp WHERE email = ?" var userStatement *sql.Stmt Any help or insight into the error is greatly appreciated!
*. This will help rule out a column mismatch.sql: Scan error on column index 3: converting string "" to a int64: strconv.ParseInt: parsing "": invalid syntax