私は次のものを持っています:
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(buffer)を実行しようとすると、次のエラーが発生します。
sql: converting Exec argument #1's type: unsupported type BufferType, a string)
BufferTypeが実際には単なる文字列であることを解決し、保存することは可能でしょうか? この構造体をdb.Find()でロードしようとすると、同様のエラーが発生します。
さらにデバッグした後、このエラーは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 :
+1の優れたソリューション。 これがGORMドキュメントにあったらいいのにと思います。
最も参考になるコメント
私も同じ問題を抱えていました。 @brampの解決策はまだ私にエラーを与えました。 以下は私のために働いた:
違いは、
[]byte
代わりにstring
です。 このstackoverflowスレッドは私を助けました: http :