在使用 gorm 开发的时候 发现一个奇怪的问题.
生成的 SQL, 在程序中查询不到内容, 在是 Navicat for MySQL 中查询正常.
gorm 生成的 sql 及结果.
可以看到, 大大的红字
[0 rows affected or returned ]
把 sql 复制到 Navicat 中
这 *** 不是有数据吗! 😭
然后!!!!!
尝试过很多方法.都没有解决问题.
直到想到了一个很容易忽略的问题: 时区.
使用 mysql 的时间字段遇到如下两个问题
1.使用 go-sql-driver 来连接 mysql 数据库,获取的时区默认是 UTC +0 的,与本地的东八区是有区别,在业务处理中会出现问题
2.获取 mysql 中的日期,是 string 类型,需要在代码中用 time.Parse 进行转化
解决方案:
在连接的 dsn 中,添加 parseTime=true
和 loc=Local
,此处的 local
可以换为具体的时区 (Asia/Shanghai)
数据库链接:
root:root@tcp(localhost:3306)/abc?charset=utf8
改为
root:root@tcp(localhost:3306)/abc?charset=utf8&parseTime=True&loc=Local
问题解决...
结论
大多时候, 找不到问题的问题. 会是一个很煞笔的问题....😂
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于