Scan error: unsupported Scan, storing driver.Value type <nil> into type *string

Viewed 34868

When I try to fetch Articles without photo from mysql database:

func ArticlesAllText() ([]Article, error) {
    var err error
    var result []Article
    err = database.SQL.Select(&result, "SELECT * FROM Article WHERE photo IS NULL")
    if err != nil {
        log.Println(err)
    }
    return result, standardizeError(err)
}

I get

sql: Scan error on column index 10: unsupported Scan, storing driver.Value type into type *string

When the field value is NULL.

How can I fix this?

2 Answers

You can use any of the below two solutions:-

  1. You can use sql.NullString to handle the field before using scan(). OR
  2. You can replace all the possible NULL values with the desired string say '' from the query itself.

For implementing the 1st solution refer to the @RayfenWindspear answer. For the 2nd solution update the query as below:-

SELECT colm1, colm2, COALESCE(photo, '') photo, colm4 FROM Article WHERE photo IS NULL

For MySQL use IFNULL() or COALESCE() function to return an alternative value if an expression is NULL:

For SQL Server use IFNULL() or COALESCE() function for the same result

MS Access use IsNull function for the same result

For Oracle use NVL() function for the same result

Reference: https://www.w3schools.com/sql/sql_isnull.asp

Related