Go DB查询命令正在生成奇怪的sql查询
我的模型是:Go DB查询命令正在生成奇怪的sql查询,go,go-gorm,cockroachdb,Go,Go Gorm,Cockroachdb,我的模型是: type Report struct { ID int `json:"id,omitempty" gorm:"primary_key"` Title *string `json:"title" gorm:"not null"` } 我已将变量report初始化为var report我已成功地将此模型自动迁移为数据库表,并已使用GORM的db.Create(&report)将数据库填充为sql INSERT 我面临的问题是在尝试查询命令时。GORM支持
type Report struct {
ID int `json:"id,omitempty" gorm:"primary_key"`
Title *string `json:"title" gorm:"not null"`
}
我已将变量report
初始化为var report
我已成功地将此模型自动迁移为数据库表,并已使用GORM的db.Create(&report)
将数据库填充为sql INSERT
我面临的问题是在尝试查询命令时。GORM支持的每个查询命令,例如db.Find(&report)
,db.First(&report,1)
,都会生成如下查询:
SELECT * FROM "reports" WHERE "reports"."deleted_at" IS NULL AND ((id = $1))
SELECT * FROM "reports" WHERE "reports"."deleted_at" IS NULL AND ((id = $1))
SELECT * FROM reports WHERE (reports.deleted_at IS NULL) AND ((id = $1))
SELECT * FROM reports WHERE (reports.deleted_at IS NULL) AND ((id = $1))
SELECT 0 done
我无法查询数据库。我正在使用GORM和蟑螂db。当使用GO pq驱动程序和原始sql命令时,这项功能可以正常工作。位于的
deleted\u列是GORM结构及其功能的一部分。您是否在使用本例中看不到的gorm.Model
?除非定义名为DeletedAt
的字段或在模型结构中嵌入gorm.Model
,否则不应该发生这种情况 由于模型已在处删除字段,gorm将自动使用软删除功能。您可以使用Unscoped
db.Unscoped().Find(&reports)
这与运行原始查询相同
db.Raw("SELECT * FROM reports").Scan(&reports)
正是我所困惑的。我没有定义任何名为DeletedAt
的字段,也没有使用gorm.Model
。我只定义了一个Report struct
,并将gorm包装在httprouter
下以插入和查询每个结构<代码>数据库。创建
工作正常。在db.Find中使用error函数返回未找到的记录
。顺便说一句,我的代码是基于cockroachlabs提供的示例orm包派生的。我再试了一次,但没有找出问题所在。GORM文档中作为Where(Struct&Map)查询提供的示例也不起作用。同时,我使用了GORM的原始查询作为db.raw(“SELECT*FROM reports”).Scan(&report)
,目前似乎只有这一点起作用。