sql/driver: couldn't convert "\x01" into type bool

mysql 中表字段定义如下:

id int
name varchar
enabled bit(1)

go 代码中对应结构体如下:

type User struct {
    Id    string `gorm:"column:code;primary_key"`
    Name    string `gorm:"column:name"`
    Enabled bool   `gorm:"column:enabled"`
}

使用 gorm 查询代码如下:

// 获取所有的记录
var users []User
err := db.Find(&users).Error

报错如下:

sql/driver: couldn't convert "\x01" into type bool

看起来是 bit(1) 不能转 go 的 bool 类型? 何解.

觉得还不错点个赞呗!
taadis
讨论数量: 2
taadis

自问自答

把 mysql 中的 bit(1) 改为 tinyint(1) 即可对应 go 的 bool 类型.

3年前 评论

这应该是gorm跟msqyl的问题,如果想用bit表示bool,则go结构体也要用byte,如果用结构体用bool 那么gorm应该是映射为了数值类型的0,1 也即是默认用int表示bool,没有做bit的映射

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!