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 类型? 何解.
自问自答
把 mysql 中的
bit(1)
改为tinyint(1)
即可对应 go 的 bool 类型.这应该是gorm跟msqyl的问题,如果想用bit表示bool,则go结构体也要用byte,如果用结构体用
bool
那么gorm
应该是映射为了数值类型的0,1 也即是默认用int表示bool,没有做bit的映射