我使用 GORM 运行程序,但数据丢失。数据集发生变化。我将根据下面的股票结构举一个例子。 StockCode 取代了 Barcode。我对此进行了检查。当我在数据库中运行查询时,没有收到这样的错误。我不确定这是否是一个错误。除了以下用法还有其他用法吗?
type Stock struct {
StockCode string
Barcode string
StockName string
ProductImage string
}
var stock []Stock
MicroDB.Raw("exec Company_Stocks;").Scan(&stock) // I also tried the find() method
for _, v := range stock{
fmt.Println(v.Barcode, v.ProductImage)
}
您似乎正在尝试使用 Go 中的 GORM 从过程中获取数据。但是,您没有获得预期的数据,并且数据集中存在变化。您还提到您已经检查了 StockCode 而不是 Barcode,并且直接在数据库中运行查询时没有收到错误。
首先,确保过程
Company_Stocks
以正确的格式返回预期数据。
如果该过程返回正确的数据,您可能需要检查 Stock
结构中的字段是否正确映射到结果集中的列。确保结构中字段的名称和类型与过程返回的列匹配。
如果到目前为止一切看起来都正确,您可以尝试使用 GORM 中的
Select
方法来显式指定要从结果集中选择的列。
或者,您可以尝试使用
Find
方法而不是 Scan
:
使用前请确保
MicroDB
变量已正确初始化为 GORM DB 实例。
如果您仍然遇到问题,请提供其他详细信息,例如您正在使用的数据库、
Company_Stocks
过程的结构以及您遇到的任何相关错误消息。