go-admin
go-admin copied to clipboard
在 go-admin 中使用 gorm 时,无法从数据库中获取到时间信息
问题描述 [详细地描述问题,让大家都能理解]
在 goadmin 中使用自带的 gorm 无法获取数据库中的时间,出现类型的错误
搭建 go-admin 的时候选择 gorm 作为数据库工具,base.go 如下所示
package models
import (
"fmt"
"github.com/GoAdminGroup/go-admin/modules/db"
"github.com/jinzhu/gorm"
"time"
)
var (
orm *gorm.DB
err error
)
//定义基础的 Model 实例
type Model struct {
//基础ID,自增,主键
ID uint `json:"id" gorm:"primary_key" `
//创建时间
CreatedAt time.Time `json:"created_at" `
//更新时间
UpdateAt time.Time `json:"updated_at" `
//删除时间
//DeletedOn int `json:"deleted_on" `
}
//初始化链接数据库,通过GoAdmin的配置进行链接
func Init(c db.Connection) {
//
orm, err = gorm.Open("mysql", c.GetDB("default"))
fmt.Println(c.GetDB("default"))
if err != nil {
panic("initialize orm failed")
}
}
当使用 orm.find(&model)的时候gorm会出现报
[2020-09-23 21:07:12] sql: Scan error on column index 3, name "created_at": unsupported Scan, storing driver.Value type []uint8 into type *time.Time
查找资料发现需要在 gorm 链接数据库时增添一部门参数才能解决这个问题,如这里中所提到的解决方法。
在 go-admin 中应该如何修改才能解决这个问题?
请问是否解决了我也遇到了类似的问题
@gofromzero 我自己实例化 gorm了,实例化了两个 gorm 一个是自己的,一个是默认的,需要时间的地方用自己的 gorm 解决
@gofromzero 我自己实例化 gorm了,实例化了两个 gorm 一个是自己的,一个是默认的,需要时间的地方用自己的 gorm 解决
了解了谢谢
@gofromzero 我自己实例化 gorm了,实例化了两个 gorm 一个是自己的,一个是默认的,需要时间的地方用自己的 gorm 解决
我发现config.json 里的数据库配置有个dsn 参数 能覆盖其他参数。 go-admin/models/config/config.go 中的Database struct https://github.com/GoAdminGroup/go-admin/blob/57bcf6d25f6828ae08baffb0c9c258ee7f51d33c/modules/config/config.go#L26
// Database is a type of database connection config.
//
// Because a little difference of different database driver.
// The Config has multiple options but may not be used.
// Such as the sqlite driver only use the File option which
// can be ignored when the driver is mysql.
//
// If the Dsn is configured, when driver is mysql/postgresql/
// mssql, the other configurations will be ignored, except for
// MaxIdleCon and MaxOpenCon.
type Database struct {
Host string `json:"host,omitempty" yaml:"host,omitempty" ini:"host,omitempty"`
Port string `json:"port,omitempty" yaml:"port,omitempty" ini:"port,omitempty"`
User string `json:"user,omitempty" yaml:"user,omitempty" ini:"user,omitempty"`
Pwd string `json:"pwd,omitempty" yaml:"pwd,omitempty" ini:"pwd,omitempty"`
Name string `json:"name,omitempty" yaml:"name,omitempty" ini:"name,omitempty"`
MaxIdleCon int `json:"max_idle_con,omitempty" yaml:"max_idle_con,omitempty" ini:"max_idle_con,omitempty"`
MaxOpenCon int `json:"max_open_con,omitempty" yaml:"max_open_con,omitempty" ini:"max_open_con,omitempty"`
Driver string `json:"driver,omitempty" yaml:"driver,omitempty" ini:"driver,omitempty"`
DriverMode string `json:"driver_mode,omitempty" yaml:"driver_mode,omitempty" ini:"driver_mode,omitempty"`
File string `json:"file,omitempty" yaml:"file,omitempty" ini:"file,omitempty"`
Dsn string `json:"dsn,omitempty" yaml:"dsn,omitempty" ini:"dsn,omitempty"`
Params map[string]string `json:"params,omitempty" yaml:"params,omitempty" ini:"params,omitempty"`
}
直接使用dsn的配置就可行了