Gorm: ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с пСрСчисляСмыми Ρ‚ΠΈΠΏΠ°ΠΌΠΈ

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 26 нояб. 2014  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: go-gorm/gorm

ИмСю ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

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"`
}

Когда я ΠΏΡ€ΠΎΠ±ΡƒΡŽ db.Save (Π±ΡƒΡ„Π΅Ρ€), я ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ:
sql: converting Exec argument #1's type: unsupported type BufferType, a string)

МоТно Π»ΠΈ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ BufferType Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ просто строка, ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ? Π― ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ ошибки, Ссли ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ эту структуру с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ db.Find ()

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π― Π±Ρ‹Π»Π° такая ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. РСшСниС @bramp ΠΏΠΎ- ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π΄Π°Π»ΠΎ ΠΌΠ½Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ. Для мСня сработало ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

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

Π Π°Π·Π½ΠΈΡ†Π° Π² использовании []byte вмСсто string . Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΡ‚ΠΎΠΊ stackoverflow ΠΏΠΎΠΌΠΎΠ³ ΠΌΠ½Π΅: http://stackoverflow.com/a/20582504/2418739

ВсС 3 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

ПослС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, эта ошибка , каТСтся, Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… golang / SQL ΠΊΠΎΠ΄Π°, ΠΈ я нашСл Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ здСсь . МнС просто Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ:

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

Π­Ρ‚ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΡƒΠΊΠ»ΡŽΠΆΠ΅, Π½ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ. Π― ΠΌΠΎΠ³ Π±Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ сюда ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ошибок, Ссли Π±Ρ‹ ΠΌΠ½Π΅ это Π±Ρ‹Π»ΠΎ Π½ΡƒΠΆΠ½ΠΎ.

Π― Π±Ρ‹Π»Π° такая ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. РСшСниС @bramp ΠΏΠΎ- ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π΄Π°Π»ΠΎ ΠΌΠ½Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ. Для мСня сработало ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

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

Π Π°Π·Π½ΠΈΡ†Π° Π² использовании []byte вмСсто string . Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΡ‚ΠΎΠΊ stackoverflow ΠΏΠΎΠΌΠΎΠ³ ΠΌΠ½Π΅: http://stackoverflow.com/a/20582504/2418739

+1 ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. Π― Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π», Ρ‡Ρ‚ΠΎΠ±Ρ‹ это Π±Ρ‹Π»ΠΎ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ GORM.

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ