代码之家  ›  专栏  ›  技术社区  ›  Georgy

Go gorm mysql“不支持的类型[]字符串,一段字符串”

  •  0
  • Georgy  · 技术社区  · 6 年前

    我使用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: converting argument $1 type: unsupported type []string, a slice of string) . 我明白,mysql不支持这种类型,但是我能用某种方法解决这个问题吗?我想我可以把字体改成 json.rawMessage ,但我认为这是一个错误的方式。

    我用方言 "github.com/jinzhu/gorm/dialects/mysql"

    1 回复  |  直到 6 年前
        1
  •  3
  •   dolan    6 年前

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

    1. 您可以自己序列化列表(使用逗号分隔的字符串、json或其他序列化格式),并将其存储在字符串或字节列中。
    2. 可以使用join将这两个表关联起来。

    http://doc.gorm.io/associations.html#has-many ).

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