Go gorm mysql“;不支持的类型[]字符串,字符串的一部分;

Go gorm mysql“;不支持的类型[]字符串,字符串的一部分;,mysql,go,go-gorm,Mysql,Go,Go Gorm,我使用gorm,并尝试创建到mysql的事务。我有一个结构 type Game struct { Images []string } game := Game{Images: []string{"1.png", "2.png"}} db := Database() tx := db.Begin() if err := tx.Create(&game).Error; err != nil { tx.Rollback() return errors.New("

我使用gorm,并尝试创建到mysql的事务。我有一个结构

type Game struct {
    Images []string
}

game := Game{Images: []string{"1.png", "2.png"}}

db := Database()

tx := db.Begin()

if err := tx.Create(&game).Error; err != nil {
    tx.Rollback()
    return errors.New("Cannot add game")
}

tx.Commit()
但是我得到了错误
(sql:转换参数$1类型:不支持的类型[]字符串,一段字符串)
。我明白,mysql不支持这种类型,但我能以某种方式解决这个问题吗?我想我可以将类型更改为
json.rawMessage
,但我认为这是一种错误的方式


我使用方言
“github.com/jinju/gorm/dialogs/mysql”

如果你想在mysql中列出一些东西,你有两个选择

  • 您可以自己序列化列表(转换为逗号分隔字符串、json或其他序列化格式),并将其存储在字符串或字节列中
  • 可以使用join将这两个表关联起来
  • gorm通过称为关联的东西支持连接。在本例中,您有一个has-many关联()

    您可以这样做的一个示例是:

    type Game struct {
        gorm.Model
        GameImages   []GameImage
    }
    
    type GameImage struct {
        gorm.Model
        Name string
    }
    
    db.Model(&game).Related(&gameImages)
    

    您可以将其存储在包含JSON编码数据的
    字符串中,并在从数据库写入/读取数据时对其进行封送/解封。但是,不支持这种类型的原因是MySQL不应该这样使用。您应该有一个图像表,其中包含游戏ID和路径字符串或类似的内容。