This is a created article in which the information may have evolved or changed.
Golang, the operation of MySQL database, the use of query statements, the general wording
Rows, err: = db. Query ("Select name from table") if err! = Nil { return}for rows. Next () { var name string err = rows. Scan (&name) if err! = Nil { return }}
When the found field has NULL, it will report such an error unsupported driver, Scan pair: <nil>-*string
This is due to the strict restrictions on the data type of the go language. The type of name is string, so you can only accept a value of type string, where nil is a null pointer type. The best solution is to insert a record without a null presence.
However, depending on my database design, some union query statements will inevitably return null values, so another workaround is to define the name field as a pointer type
Rows, err: = db. Query ("Select name from table") if err! = Nil { return}for rows. Next () { var name *string err = rows. Scan (&name) if err! = Nil { return }}
Actually just changed the name of the type definition one place, the rest is unchanged. When the query result is null, the value of name is nil. When the query result is a string, go will assign the value of name to the pointer to that string, so it will solve the problem!