从 GORM V1 迁移到 V2 时获得 "Missing Error method"
Getting "Missing Error method" when migrating from GORM V1 to V2
我目前正在从 GORM V1 迁移到 V2。有相当数量的向后兼容性,但我面临以下问题。
config.DB, err = gorm.Open(mysql.Open(config.DBDSN), &gorm.Config{})
if err != nil {
panic(err)
}
上面的代码显示了我如何连接到 mySQL 数据库。下面的函数导致错误。
func (b *Base) AddTags(model interface{}, modelID uint64, tagType models.TagType, tags []models.Tag) error {
err := b.config.DB.Model(model).Association(tagType.Field()).Append(tags).Error
if err != nil {
return err
}
return b.updateTagPriority(model, modelID, tagType, tags)
}
错误是
cannot use err (type func() string) as type error in return argument:
func() string does not implement error (missing Error method)
我使用 V2 发行说明重构了部分代码,但我无法解决这个特定问题。 https://gorm.io/docs/v2_release_note.html 我认为 V1 和 V2 之间的错误处理可能会有一些重大变化
根据code,Append
函数returns只有一个原生的error
。
所以你可以这样写:
err := b.config.DB.Model(model).Association(tagType.Field()).Append(tags)
而不是:
err := b.config.DB.Model(model).Association(tagType.Field()).Append(tags).Error
我目前正在从 GORM V1 迁移到 V2。有相当数量的向后兼容性,但我面临以下问题。
config.DB, err = gorm.Open(mysql.Open(config.DBDSN), &gorm.Config{})
if err != nil {
panic(err)
}
上面的代码显示了我如何连接到 mySQL 数据库。下面的函数导致错误。
func (b *Base) AddTags(model interface{}, modelID uint64, tagType models.TagType, tags []models.Tag) error {
err := b.config.DB.Model(model).Association(tagType.Field()).Append(tags).Error
if err != nil {
return err
}
return b.updateTagPriority(model, modelID, tagType, tags)
}
错误是
cannot use err (type func() string) as type error in return argument: func() string does not implement error (missing Error method)
我使用 V2 发行说明重构了部分代码,但我无法解决这个特定问题。 https://gorm.io/docs/v2_release_note.html 我认为 V1 和 V2 之间的错误处理可能会有一些重大变化
根据code,Append
函数returns只有一个原生的error
。
所以你可以这样写:
err := b.config.DB.Model(model).Association(tagType.Field()).Append(tags)
而不是:
err := b.config.DB.Model(model).Association(tagType.Field()).Append(tags).Error