原因

数据库类型是 datatime 或 timestamp,但是查询出来是 uint8 类型,无法转换成 time.Time 类型

解决方案

在数据库连接的字符串中添加:&parseTime=True
用字符串连接的方式可以将字符串写成下面的格式

db, err := sql.Open("mysql", "root:123456@tcp(localhost:3306)/test?charset=utf8&parseTime=True")

用结构体的方式可以像下面这样

var Db *sql.DB

func init() {
	cfg := mysql.Config{
		User:                 "root",
		Passwd:               "root",
		Net:                  "tcp",
		Addr:                 "127.0.0.1:3306",
		DBName:               "chitchat",
		ParseTime:            true,
		AllowNativePasswords: true,
	}
	var err error
	Db, err = sql.Open("mysql", cfg.FormatDSN())
	if err != nil {
		panic(err)
	}
}
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐