Как проверить, существует ли строка с помощью sqlx?

Я хочу, чтобы эта функция возвращала true для строки, содержащей email, найденной в базе данных. Вот код

func UserExists(email string) bool {
    var err error
    user := model.User{}
    err = shared.Dbmap.Get(&user, "SELECT * FROM user WHERE email=? LIMIT 1", email)
    if err == nil {
        fmt.Println("User is already in DB")
        return true
    } else {
        fmt.Println("No rows returned")
        return false
    }
}

Однако он всегда возвращает false, даже если в базе данных есть такое электронное письмо, поэтому очевидно, что запрос не соответствует заданию. Как я могу это исправить?


person Karlom    schedule 11.07.2017    source источник
comment
Вы пытались заменить fmt.Println на fmt.Printf(%v, err), чтобы убедиться, что вы получаете ту ошибку, которую, по вашему мнению, получаете?   -  person ipaul    schedule 11.07.2017
comment
Проверьте количество строк в результате.   -  person Adrian    schedule 11.07.2017
comment
@ipaul я получаю эту ошибку: sql: Scan error on column index 4: unsupported Scan, storing driver.Value type []uint8 into type *time.Time   -  person Karlom    schedule 11.07.2017
comment
@Karlom, какое имя переменной ссылается на объект БД, является ли оно общим?   -  person zenwraight    schedule 11.07.2017
comment
@Karlom, это похоже на проблему между тем, как ваша база данных кодирует метки времени, и тем, как метка времени определяется в вашей модели. Возможно, связано с github.com/go-sql-driver/mysql/issues/29. ?   -  person ipaul    schedule 11.07.2017
comment
@ipaul, да, на самом деле я решил это здесь: stackoverflow.com/questions/45040319/. Вы можете ответить, и я приму. Спасибо за совет.   -  person Karlom    schedule 11.07.2017
comment
Чтобы проверить, не возвращает ли он строки, это поможет err == sql.ErrNoRows   -  person ralixyle    schedule 24.07.2018