穆穆青风至 2023-10-18 20:48 采纳率: 97.4%
浏览 25

使用gorm框架插入时间出错

go语言使用gorm框架存入一个数据时报错时间不对

db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
    if err != nil {
        panic("failed to connect database")
    }
    // 迁移 schema
    db.AutoMigrate(&models.User{})

    user := models.User{RegisterTime: time.Now(), Account: "1"}
    db.Create(user)

报错如下

img

然后我在navicat中运行上面sql语句,能插入啊,咋回事

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-18 22:26
    关注

    【以下回答由 GPT 生成】

    问题分析:

    根据错误提示信息,可以看出问题出现在时间字段的插入上。Gorm默认使用UTC时间,因此它会将时间格式化为UTC时间后插入数据库。而Navicat执行SQL语句时,使用的是本地时间。这就导致了时间不一致的问题。

    解决方案:

    解决该问题的方法有两种:

    方法1: 使用Gorm提供的NowFunc()函数

    Gorm提供了一个NowFunc()函数,用于设置当前时间。你可以使用该函数来插入本地时间而不是UTC时间。下面是修改后的代码:

    db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
    if err != nil {
        panic("failed to connect database")
    }
    
    // 迁移 schema
    db.AutoMigrate(&models.User{})
    
    user := models.User{RegisterTime: gorm.NowFunc(), Account: "1"}
    db.Create(user)
    

    这样设置后,Gorm会使用NowFunc()返回的本地时间进行插入操作。

    方法2: 自定义Gorm的时间格式化方法

    如果你想自定义时间的格式化方式,可以通过自定义Gorm的时间格式化方法来实现。下面是修改后的代码:

    db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
        NowFunc: func() time.Time {
            return time.Now().Local()
        },
    })
    if err != nil {
        panic("failed to connect database")
    }
    
    // 迁移 schema
    db.AutoMigrate(&models.User{})
    
    user := models.User{RegisterTime: time.Now(), Account: "1"}
    db.Create(user)
    

    通过在Config中设置NowFunc属性为自定义的时间格式化方法,可以将时间格式化为本地时间后插入数据库。

    选择两种方法中的一种进行修改即可解决该问题。

    希望对你有帮助!如果还有其他问题,请继续提问。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 10月18日

悬赏问题

  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题