gpt4 book ai didi

去 GORM db.Automigrate

转载 作者:IT王子 更新时间:2023-10-29 02:11:12 26 4
gpt4 key购买 nike

我使用 Go-GORM 连接到 cockrouch 数据库集群。我写了一个辅助函数来处理连接和自动迁移部分。一切正常,除非我想自动迁移超过 1 个模型。

err = helperdb.HandleMigrate(db, models.Resource{}, models.Right{})
if err != nil {
helperlog.Log("Clavem", "HandleMigrate", "Error migrating resource:"+err.Error())
return
}

这是辅助函数:

// HandleMigrate ...
func HandleMigrate(db *gorm.DB, models ...interface{}) error {

// this need to be checked
err := db.AutoMigrate(models).Error
if err != nil {
fmt.Println("Error HandleMigrate:" + err.Error())
return err
}

return nil

我收到以下错误:

pq: empty table name: "\"\""

当我直接调用 gorm.DB.AutoMigrate(&models.Resurce{}, models.Right{}) 时,我没有收到任何错误。

我知道我不需要辅助函数,但我想知道为什么辅助函数不起作用,尤其是因为这是我第一次使用可变参数函数。

谢谢 :)

最佳答案

很确定你只需要做:

err := db.AutoMigrate(models...).Error

可变参数函数将参数作为类型的一部分接收。在这种情况下,您的函数接收一个名为 models[]interface{}。当您将该参数传递给 db.AutoMigrate 时,您将其作为 []interface{} 类型的单个参数传递。

您真正想要的是将 args 中的每个值作为单独的参数传递(与您接收它们的方式相同)。为此,您必须使用 ... 语法。

关于去 GORM db.Automigrate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46654132/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com