GORM 未返回正确的时间。日期时间类型 mysql 列的时间值

问题描述 投票:0回答:1

数据库由

db.AutoMigrate(&models.User{})

创建

用户在包中:模型

type User struct {
    Username     string         `json:"username" gorm:"primaryKey; not null; unique"`
    Passwordhash string         `json:"passwordhash" gorm:"not null"`
    Pincode      int            `json:"pincode" gorm:"not null"`
    CreatedAt    time.Time      `json:"created_at" gorm:"type:DATETIME"`
    UpdatedAt    time.Time      `json:"updated_at" gorm:"type:DATETIME"`
    DeletedAt    gorm.DeletedAt `json:"deleted_at" gorm:"index,type:DATETIME"`
}
    db := config.InitializeDB()
    var dataFromDB models.User //Read DB data from here
    errr := db.Where("username = ?", userData.Username).Limit(1).Find(&dataFromDB).Error
    log.Println("CreatedAt: ", dataFromDB.CreatedAt)
    log.Println("CreatedAt: ", dataFromDB.UpdatedAt)
    if errr != nil {
        log.Println("Error fetching data:", errr)
        return
    }

这是我收到的完整错误

2024/08/30 10:56:30 Server starting at 9090

2024/08/30 10:57:00 /app/controllers/auth_controller.go:30 sql: Scan error on column index 1, name "created_at": unsupported Scan, storing driver.Value type []uint8 into type *time.Time
[10.014ms] [rows:1] SELECT * FROM `users` WHERE username = 'smitesh97' AND `users`.`deleted_at` IS NULL LIMIT 1
2024/08/30 10:57:00 CreatedAt:  0001-01-01 00:00:00 +0000 UTC
2024/08/30 10:57:00 CreatedAt:  0001-01-01 00:00:00 +0000 UTC
2024/08/30 10:57:00 Error fetching data: sql: Scan error on column index 1, name "created_at": unsupported Scan, storing driver.Value type []uint8 into type *time.Time

这是我试图作为小组项目的一部分创建的身份验证后端的一部分。主项目将使用它。尽管当我在本地设置中使用此配置时它可以工作。而在容器上运行它则不然。 如果我将 CreatedAt 或 UpdatedAt 的类型更改为 interface{} 类型。它工作得很好,但我不认为这是推荐的。 这是一个错误吗?

mysql go-gorm
1个回答
0
投票

在 DSN 中添加

parseTime=True
似乎已经解决了问题。

dsn := fmt.Sprintf("%s:%s@tcp(host.docker.internal:3306)/lostandfound***?charset=utf8&parseTime=True&loc=Local***", username, password)
    db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
    if err != nil {
        panic(err)
    }
    
© www.soinside.com 2019 - 2024. All rights reserved.