在Go中处理动态错误(特别是数据库/ sql程序包)

BlinkyTop

database/sql在go中使用该程序包sql.Exec将返回动态生成的未引用错误,例如

"Error 1062: Duplicate entry '192' for key 'id'"

问题在于它还可能返回错误,例如

"Error 1146: Table 'tbl' doesn't exist"

从同一电话到 sql.Exec

我怎么能不知道这两个错误之间的区别

  1. 字符串比较,或
  2. 错误代码的模式匹配

还是那些惯用的解决方案解决这个问题?

弗拉德

数据库/ 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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Java程序中调用PL / SQL程序包代码

来自分类Dev

动态加载程序包

来自分类Dev

SQL Server代理与程序包执行实用程序中的执行

来自分类Dev

将程序包调用到程序中,Oracle PL / SQL

来自分类Dev

出现DistributionNotFound错误,但程序包存在

来自分类Dev

Android Studio导入错误的程序包

来自分类Dev

审核参数检查与错误的程序包

来自分类Dev

安装Rcartogram程序包-错误消息

来自分类Dev

错误删除的程序包

来自分类Dev

NodeJS Azure Sequelize SQL Server-错误:请手动安装繁琐的程序包

来自分类Dev

在Cognos中添加或编辑程序包

来自分类Dev

是否在程序包中存储servlet?

来自分类Dev

Wix安装程序包中的if语句

来自分类Dev

在没有SSIS的情况下在SQL Server Management Studio中创建程序包

来自分类Dev

Android Studio中的“程序包筛选器删除了所有程序包”错误

来自分类Dev

在vs 2015中执行更新程序包时出现“程序包”错误

来自分类Dev

Android Studio中的“程序包筛选器删除了所有程序包”错误

来自分类Dev

程序包级别访问中是否包括默认程序包?

来自分类Dev

接口只能在相同的程序包和子程序包中访问吗?

来自分类Dev

如何使用子程序包/通用程序包实例中的类型

来自分类Dev

如何在apt中查找依赖于某个程序包的程序包?

来自分类Dev

使用Hibernate程序包从另一个程序包访问数据库

来自分类Dev

dpkg:错误处理程序包sendmail-base

来自分类Dev

dpkg:错误处理程序包(Ubuntu 16.04)

来自分类Dev

从扩展程序中获取主应用程序包

来自分类Dev

在SSIS程序包中设置动态变量日

来自分类Dev

为什么在PL SQL程序包中出现“声明标识符”和许多其他错误?

来自分类Dev

Android:其他程序包中的活动错误

来自分类Dev

错误:在提供程序包中找不到类型“ SingleChildCloneableWidget”

Related 相关文章

  1. 1

    在Java程序中调用PL / SQL程序包代码

  2. 2

    动态加载程序包

  3. 3

    SQL Server代理与程序包执行实用程序中的执行

  4. 4

    将程序包调用到程序中,Oracle PL / SQL

  5. 5

    出现DistributionNotFound错误,但程序包存在

  6. 6

    Android Studio导入错误的程序包

  7. 7

    审核参数检查与错误的程序包

  8. 8

    安装Rcartogram程序包-错误消息

  9. 9

    错误删除的程序包

  10. 10

    NodeJS Azure Sequelize SQL Server-错误:请手动安装繁琐的程序包

  11. 11

    在Cognos中添加或编辑程序包

  12. 12

    是否在程序包中存储servlet?

  13. 13

    Wix安装程序包中的if语句

  14. 14

    在没有SSIS的情况下在SQL Server Management Studio中创建程序包

  15. 15

    Android Studio中的“程序包筛选器删除了所有程序包”错误

  16. 16

    在vs 2015中执行更新程序包时出现“程序包”错误

  17. 17

    Android Studio中的“程序包筛选器删除了所有程序包”错误

  18. 18

    程序包级别访问中是否包括默认程序包?

  19. 19

    接口只能在相同的程序包和子程序包中访问吗?

  20. 20

    如何使用子程序包/通用程序包实例中的类型

  21. 21

    如何在apt中查找依赖于某个程序包的程序包?

  22. 22

    使用Hibernate程序包从另一个程序包访问数据库

  23. 23

    dpkg:错误处理程序包sendmail-base

  24. 24

    dpkg:错误处理程序包(Ubuntu 16.04)

  25. 25

    从扩展程序中获取主应用程序包

  26. 26

    在SSIS程序包中设置动态变量日

  27. 27

    为什么在PL SQL程序包中出现“声明标识符”和许多其他错误?

  28. 28

    Android:其他程序包中的活动错误

  29. 29

    错误:在提供程序包中找不到类型“ SingleChildCloneableWidget”

热门标签

归档