登录
首页 >  Golang >  Go问答

如何处理 GORM 提交/回滚错误

来源:stackoverflow

时间:2024-04-28 20:54:34 180浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《如何处理 GORM 提交/回滚错误》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!

问题内容

我刚刚发现在gorm中,事务提交可能会返回错误,例如:

tx := db.begin()
// do somthing here
err := tx.commit().error

回滚时也会出现

tx := db.begin()
// do somthing here
err := tx.Rollback().Error

我想知道这个错误是怎么发生的?

如果发生的话,gorm 本身会执行任何恢复功能来处理待处理的事务吗?

或者如果回滚或提交返回错误,我是否有必要做一些事情?

顺便说一句,gorm 中是否有针对此类事务问题的最佳实践?


解决方案


在完全相同的情况下,您可能会从其他数据库调用中收到错误:

  • 网络连接失败
  • 数据库、磁盘或硬件故障
  • 权限问题
  • 命令中的语法错误
  • 数据不一致错误

对于 Begin,您的错误选项有些有限,因为还没有可能不一致的数据。但对于 CommitRollback ,任何这些错误都可能发生,以及没有要提交的活动事务的情况(因为之前的错误,因为它已经提交,或者因为它已经回滚)。

没有。 GORM 不可能做到这一点,因为它不知道你的应用程序逻辑。与所有类型的所有失败一样,由程序员决定适当的操作。也许你应该重试。也许你应该只重试 N 次。也许你应该忽略失败并像成功一样继续。也许您应该向用户返回一个错误。也许你应该恐慌并使整个程序崩溃。 GORM 显然无法知道正确的反应。

正如我在上一段中所回避的,只有你才能知道这一点。您的应用程序试图做什么?万一失败,正确的做法是什么?

这与 GORM 无关。处理错误的“最佳实践”就是简单地推断错误所指示的内容,以及您的应用程序在这种情况下应该做什么。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>