beego框架orm时区问题

公司一个项目使用beego框架,orm层插入datetime类型字段会比插入当前时间晚八个小时。

根据beego框架文档显示数据库连接字符串需要指定loc参数loc=Asia/Shanghai但是加入这个参数后服务器启动报错

Unknow time zone Asia/Shanghai

而在我开发用的电脑上则没有问题

本地系统为Ubuntu 数据库Mysql 5.6

服务器是windows server 2008,数据库Mysql5.5

请问有没有什么好的解决办法?

共 8 个回复


Memory_Leak

我自己来终结此贴吧

根据github上go-sql-driver/mysqlbeego官网的说法从某一版本的驱动程序会无视数据库和系统时区,所以需要在连接字符串中指定时区。

根据我在linux(Ubuntu)和windows上的测试mysql5.6是可以支持loc=Asia/Shanghai这种写法的,而5.5不支持。
后来,在mysql官网发现可以把连接字符串的时区设置为Local
loc=Local
然后测试,成功

连接字符串示例

root:passwd@tcp(localhost:3306)/dbname?charset=utf8&loc=Local

# 0

qida

有用,好用,特来感谢。

# 2

zl3096

曾经碰到过这个问题,好像是最后把datetime字段换成varchar解决的,没你这个方法好

# 3

saint3347

loc=Local并没有用额。。还是相差8个小时,我用的是mysql,时区也都看了,是东八区。。

beego版本是1.6.1

# 4

tupunco

我的解决方式, 链接字符串加入&parseTime=true&loc=Local, 这个问题确实跟 MySQL 版本 也有关系.
详细查看这个问题回复: /t/5635e062b09ecc3ac5000063

# 6