当 sql 查询预计不会返回任何结果时,我似乎无法从 db.query 中获取 ErrNoRows 。
results, err := database.Query("SELECT title FROM accountProject WHERE accountID=? AND MATCH(title) AGAINST(?)", accountID, query)
if err != nil {
if err == sql.ErrNoRows {
return errProjectDoesNotExist
}
return err
}
Run Code Online (Sandbox Code Playgroud)
Cer*_*món 16
DB.Query或DB.QueryContext不返回值sql.ErrNoRows。当结果集没有行时,第一次调用Rows.Next将返回 false。
值sql.ErrNoRows是从DB.QueryRow或DB.QueryRowContext返回的占位符行上调用Row.Scan返回的。DB.QueryRow* 方法在出错时返回占位符行,而不是直接返回错误。
如果应用程序正在查找零行或一行,请使用 QueryRow 而不是 Query。
row := database.QueryRow("SELECT title FROM accountProject WHERE accountID=? AND MATCH(title) AGAINST(?)", accountID, query)
err := row.Scan( .... address of variables here ... )
if err == sql.ErrNoRows {
return errProjectDoesNotExist
} else if err != nil {
return err
}
Run Code Online (Sandbox Code Playgroud)