database/sql
在go中使用该程序包sql.Exec
将返回动态生成的未引用错误,例如
"Error 1062: Duplicate entry '192' for key 'id'"
问题在于它还可能返回错误,例如
"Error 1146: Table 'tbl' doesn't exist"
从同一电话到 sql.Exec
我怎么能不知道这两个错误之间的区别
还是那些惯用的解决方案解决这个问题?
数据库/ sql软件包不能解决此问题。它是特定于驱动程序的。例如,对于mysql,您可以使用:
if mysqlError, ok := err.(*mysql.MySQLError); ok {
if mysqlError.Number == 1146 {
//handling
}
}
另外,您可以找到一些错误常量包,例如来自VividCortex的mysqlerr,并使用它:
if mysqlError, ok := err.(*mysql.MySQLError); ok {
if mysqlError.Number == mysqlerr.ER_NO_SUCH_TABLE {
//handling
}
}
它并不比模式匹配好多少,但似乎更惯用了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句