第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

不受支持的數(shù)據(jù)類型:自定義 Valuer 返回 nil 的 GORM 字段上的 &[] 錯誤?

不受支持的數(shù)據(jù)類型:自定義 Valuer 返回 nil 的 GORM 字段上的 &[] 錯誤?

Go
吃雞游戲 2022-07-04 10:03:09
我試圖為 postgres 數(shù)據(jù)庫創(chuàng)建一個 GORM 模型,其中包含一個自定義類型Scanner,Valuer并將字符串切片與字符串轉(zhuǎn)換,以保存為單個數(shù)據(jù)庫列。如果切片為空或 nil,我希望數(shù)據(jù)庫列也為 nil(而不是空字符串)。type MultiString []stringfunc (s *MultiString) Scan(src interface{}) error {    str, ok := src.(string)    if !ok {        return errors.New("failed to scan multistring field - source is not a string")    }    *s = strings.Split(str, ",")    return nil}func (s MultiString) Value() (driver.Value, error) {    if s == nil || len(s) == 0 {        return nil, nil    }    return strings.Join(s, ","), nil}當我嘗試調(diào)用AutoMigrate以下結(jié)構(gòu)時出現(xiàn)問題:type Person struct {    ID      int    Name    string    Kids    *MultiString}我多次收到以下錯誤:[error] unsupported data type: &[]
查看完整描述

1 回答

?
拉莫斯之舞

TA貢獻1820條經(jīng)驗 獲得超10個贊

問題是 GORM 不確定新定義的類型的數(shù)據(jù)類型應該是什么,所以它試圖弄清楚。相反,應該顯式定義類型,在模型中使用標簽或在新類型上實現(xiàn) gorm 方法


模型中的標記


type MyModel struct {

    ...

    MyText MultiString `gorm:"type:text"`

}

這告訴 GORM 使用textDB 列類型的類型。使用此策略,每次在模型中使用新類型時都必須應用標記。


GORM 方法


可以在新數(shù)據(jù)類型上實現(xiàn)兩個 GORM 方法來告訴 GORM 應該使用哪種數(shù)據(jù)庫類型:


GormDataType() string

GormDBDataType(db *gorm.DB, field *schema.Field) string

例子:


func (MultiString) GormDataType() string {

  return "text"

}

func (MultiString) GormDBDataType(db *gorm.DB, field *schema.Field) string {


  // returns different database type based on driver name

  switch db.Dialector.Name() {

  case "mysql", "sqlite":

    return "text"

  }

  return ""

}

如果您使用的數(shù)據(jù)庫類型之間的數(shù)據(jù)類型不同,則此選項很有用。


查看完整回答
反對 回復 2022-07-04
  • 1 回答
  • 0 關注
  • 247 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號