Gorm: Masalah jenis yang disebutkan

Dibuat pada 26 Nov 2014  ·  3Komentar  ·  Sumber: go-gorm/gorm

Saya memiliki yang berikut ini:

type BufferType string
const (
    Console BufferType = "console"
    Channel BufferType = "channel"
    Conversation BufferType = "conversation"
)

type Buffer struct {
    Bid  int64  `gorm:"primary_key:yes"`
    Type BufferType `sql:"not null;type:ENUM('console', 'channel', 'conversation')"`
    Name string `sql:"size:255;not null"`
}

Ketika saya mencoba db.Save(buffer), saya mendapatkan kesalahan berikut:
sql: converting Exec argument #1's type: unsupported type BufferType, a string)

Apakah mungkin untuk menyelesaikan bahwa BufferType benar-benar hanya sebuah string, dan simpan? Saya mendapatkan kesalahan serupa jika saya mencoba dan memuat struct ini dengan db.Find()

Komentar yang paling membantu

Saya memiliki masalah yang sama. Solusi @bramp masih memberi saya kesalahan. Berikut ini bekerja untuk saya:

func (u *BufferType) Scan(value interface{}) error { *u = BufferType(value.([]byte)); return nil }
func (u BufferType) Value() (driver.Value, error)  { return string(u), nil }

Perbedaannya adalah menggunakan []byte alih-alih string . Utas stackoverflow ini membantu saya: http://stackoverflow.com/a/20582504/2418739

Semua 3 komentar

Setelah beberapa debugging lagi, kesalahan ini tampaknya keluar dari database golang/kode sql, dan saya menemukan solusi di sini . Saya hanya perlu menambahkan:

func (u *BufferType) Scan(value interface{}) error { *u = BufferType(value.(string)); return nil }
func (u BufferType) Value() (driver.Value, error)  { return string(u), nil }

Agak kikuk, tetapi membantu database mengetahui cara memetakan dengan benar. Saya juga dapat menambahkan pemeriksaan kesalahan di sini jika saya membutuhkannya.

Saya memiliki masalah yang sama. Solusi @bramp masih memberi saya kesalahan. Berikut ini bekerja untuk saya:

func (u *BufferType) Scan(value interface{}) error { *u = BufferType(value.([]byte)); return nil }
func (u BufferType) Value() (driver.Value, error)  { return string(u), nil }

Perbedaannya adalah menggunakan []byte alih-alih string . Utas stackoverflow ini membantu saya: http://stackoverflow.com/a/20582504/2418739

+1 solusi hebat. Saya berharap ini ada di dokumen GORM.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

corvinusy picture corvinusy  ·  3Komentar

alanyuen picture alanyuen  ·  3Komentar

fieryorc picture fieryorc  ·  3Komentar

Quentin-M picture Quentin-M  ·  3Komentar

pjebs picture pjebs  ·  3Komentar