技术

gorm 中 MySQL 错误码映射与主键冲突错误处理

在使用 gorm 处理数据库操作时,尤其是针对 MySQL,有时我们会遇到 golang 标准库`errors.Is`函数无法直接识别特定的 gorm 错误类型的情况,如主键冲突错误。尽管 gorm 提供了`gorm.ErrDuplicatedKey`来表示此类错误,但在原始错误返回中并不能直接通过`errors.Is(err, gorm.ErrDuplicatedKey)`来进行判断。本文深入探究 gorm.io/driver/mysql 包中的错误转换机制,揭示了如何借助`error_translator`模块将 MySQL 的错误码映射为 gorm 的错误类型。

技术 2024-03-27 11:43:05 2496

技术

GORM 中 SQL、慢 SQL 打印日志传递 trace ID

GORM 中SQL、慢SQL打印日志传递 trace ID, 重写GORM日志实现,SQL日志、慢日志请求追踪

技术 2023-09-25 11:14:27 4042

技术

如何在 Go 中实现程序的优雅退出,go-kratos 源码解析

使用kratos这个框架有近一年了,最近了解了一下kratos关于程序优雅退出的具体实现。

技术 2023-07-29 05:58:45 5729

技术

os.signal golang 中的信号处理

在程序进行重启等操作时,我们需要让程序完成一些重要的任务之后,优雅地退出,Golang为我们提供了signal包,实现信号处理机制,允许Go 程序与传入的信号进行交互。

技术 2023-07-29 05:56:55 4653

技术

【Gorm】Save 方法更新踩坑记录

在我最近使用Gorm进行字段更新的过程中,我遇到了一个问题。当我尝试更新status字段时,即使该字段的值没有发生变化,Gorm还是提示我“Duplicate entry 'xxxx' for key 'PRIMARY'”。

技术 2023-06-03 16:53:55 4723