【问题标题】:Why doesn't gorm report an insert error in the logs?为什么gorm 不在日志中报告插入错误?
【发布时间】:2018-10-09 15:32:34
【问题描述】:

我尝试使用 GORM 执行插入,我的日志显示插入语句并显示

0 行受影响或返回

如果我复制并粘贴插入语句,我可以在 psql 中看到这个错误:

错误:“start_dt”列中的空值违反非空约束

有没有办法让我立即在我的 go 日志中看到这个错误?

【问题讨论】:

  • 请贴出您尝试插入数据的代码。

标签: go go-gorm


【解决方案1】:

您应该在调试模式下使用 gorm 来查看错误消息!

// Enable Logger, show detailed log
db.LogMode(true)

// Disable Logger, don't show any log even errors
db.LogMode(false)

// Debug a single operation, show detailed log for this operation
db.Debug().Where("name = ?", "jinzhu").First(&User{})

Gorm documentation for Logger

【讨论】:

    【解决方案2】:

    您必须在插入语句的末尾附加.Error 才能让 GORM 返回错误消息(如果有)。此外,您可以使用.GetErrors() 将所有引发的错误作为一个切片。

    【讨论】:

      【解决方案3】:
      if err := db.Create(&entity).Error; err != nil {
        fmt.Println(err.Error())
      }
      

      【讨论】:

      • 虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-24
      • 2011-07-02
      • 2012-09-09
      相关资源
      最近更新 更多