V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
peanuts7660
V2EX  ›  Go 编程语言

请教个 gorm 的问题

  •  
  •   peanuts7660 · 2019-06-17 19:34:40 +08:00 · 3824 次点击
    这是一个创建于 1987 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我用 gorm 读取 sqlite3 的文件,其中有个表 字段 id 是自增的,字段 date 是 DATE 类型,当我读取这个表的数据时,id 总是显示为 0,date 总是显示为 0001-01-01T00:00:00Z
    请问下是怎么回事呢?应该怎么解决。
    谷歌百度都没搜到怎么解决。。。
    第 1 条附言  ·  2019-06-17 20:08:50 +08:00
    type Job struct{
        Id int `gorm:"column:Id;primary_key;AUTO_INCREMENT"`
        Name string `gorm:"column:Name"`
        Date time.Time `gorm:"column:date"`
    }
    
    func Test(){
    
        file := "D:\\test.db"
        db,err := gorm.Open("sqlite3",file)
        if err == nil{
            defer db.Close()
            a := Job{}
            db.Where("Name=?","testcase").Find(&a)
            fmt.Println(a)
            
        }else{
            fmt.Println(err.Error())
        }
    
    }
    
    17 条回复    2019-06-18 09:35:52 +08:00
    boom7
        1
    boom7  
       2019-06-17 19:48:05 +08:00
    代码呢
    wangsongyan
        2
    wangsongyan  
       2019-06-17 19:48:53 +08:00 via iPhone
    代码呢,返回 error 了吗?
    Carseason
        3
    Carseason  
       2019-06-17 20:06:33 +08:00 via iPhone
    没读取到所以返回默认值了
    peanuts7660
        4
    peanuts7660  
    OP
       2019-06-17 20:11:03 +08:00
    @wangsongyan 没有 error,部分数据是正常的返回

    @boom7 已经补上了代码

    @Carseason 有点不太明白为什么没有取到数据,因为同一列的其他部分数据有取到
    beidounanxizi
        5
    beidounanxizi  
       2019-06-17 20:17:27 +08:00
    连接参数 parselocal?
    anonymous256
        6
    anonymous256  
       2019-06-17 20:18:45 +08:00 via Android
    用数据库软件,打开源 sqlite 文件,看看里面是什么情况。如果数据正常,就是程序的问题。
    yswb
        7
    yswb  
       2019-06-17 20:21:34 +08:00 via iPhone   ❤️ 1
    我也遇到过一次,是数据库连接字符串上需要加上 parseDate=true (类似这样的一个配置,手机不方便查看)解决的,具体的看 readme 上面写的有。
    peanuts7660
        8
    peanuts7660  
    OP
       2019-06-17 20:24:44 +08:00
    @anonymous256 用 SQLiteStudio 打开看数据是正常的

    @beidounanxizi 您说的是 parseTime=true&loc=Local 这两参数吗?好像这两是用在 MySQL 的连接
    beidounanxizi
        9
    beidounanxizi  
       2019-06-17 20:43:16 +08:00
    @peanuts7660 是的 连接参数你看看对不对头 感觉是连接参数的设置问题
    也可以看看 b 站流出来的代码的参数设置阿
    peanuts7660
        10
    peanuts7660  
    OP
       2019-06-17 20:54:44 +08:00
    @beidounanxizi 好的,我去看看呢,谢啦
    rrfeng
        11
    rrfeng  
       2019-06-17 20:58:48 +08:00
    把这个打出来:`db.Where("Name=?","testcase").Find(&a).Error`

    估计是 RecordNotFound
    polebug
        12
    polebug  
       2019-06-17 21:16:05 +08:00
    Q: sqlite 真的连上了吗,其他数据能正常读出来吗
    momo733
        13
    momo733  
       2019-06-17 21:46:40 +08:00 via iPhone
    你数据库的列名是 Id ?日期列名 date ?检查写对了没……感觉你这大小写不统一
    wangsongyan
        14
    wangsongyan  
       2019-06-17 21:51:41 +08:00 via iPhone
    用 slice 接收试试
    janxin
        15
    janxin  
       2019-06-17 21:58:10 +08:00
    你没有验证是不是有 error 啊
    aimerforreimu
        16
    aimerforreimu  
       2019-06-17 23:29:35 +08:00
    `db.LogMode(true)`

    加上这一句打印一下 sql 的日志
    skiy
        17
    skiy  
       2019-06-18 09:35:52 +08:00
    打印下日志吧。没查到数据肯定就是空值的啊。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   930 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 19:42 · PVG 03:42 · LAX 11:42 · JFK 14:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.