在数据库迁移文件中,定义了$table->timestamps();, 但是发现字段 created_at 和 updated_at 的时间比北京时间(lumen的.env定义了时区)多了8个小时。

经排查:

对于lumen项目,除了定义APP_TIMEZONE=Asia/Shanghai 还需定义DB_TIMEZONE=+08:00。

参考文章:

http://blog.gxxsite.com/lumen-php-timezone-db-diff-wrong-time-solution/

原文:

早前发现在命令行查看 mysql 数据时,timestamp 字段(比如created_at和updated_at)总是比现实多出 8 个小时。然而由于前端一直没有察觉有问题,所以就以为只是我数据库的 timezone 设置有问题而已。

直到我创建了一个连接于同一数据库的 Laravel 工程,才发现问题的存在,mysql 中所有 timestamp 字段的原始时间(UTC)都比现实多出8小时,而调整 mysql 时区,也只是改变显示而已,数据在 insert 时已经铸成大错。

反复研究了很多,Laravel 并没有把timezone放到.env里设置,看了一遍config/app.php和config/database.php文件,确保时区均设置正确,然后在 Laravel 项目里修改的时间,timestamp 是准确的,没有多出 8 小时。

OK,到这里,问题基本找到了,我在 Lumen 中找到vendor/laravel/lumen-framework/config/database.php配置文件,里面有'timezone'  => env('DB_TIMEZONE', '+00:00')这么一句。。。我知道了,Lumen 的 PHP 配置是+8的时区,而 DB 配置是 0 时区,所以保存时,Lumen会主动把时间加 8 小时再保存进数据库。

果然,我在.env文件中添加DB_TIMEZONE=+08:00,Lumen就再也不插入错误的时间了。

官方文档中提到了APP_TIMEZONE,然而并没有提及DB_TIMEZONE,这个坑真的有点大。。。

其他参考连接:

http://bbs.earnp.com/article/355

https://www.laravist.com/blog/post/lumen-set-custom-timezone

php lumen timestamp,Lumen 5.4 时区设置相关推荐

  1. Lumen 5.4 时区设置

    为什么80%的码农都做不了架构师?>>>    在数据库迁移文件中,定义了$table->timestamps();, 但是发现字段 created_at 和 updated_ ...

  2. 【MySQL】时区设置引发的卡顿

    作者:田杰 查询执行时间长引发应用感知 "卡顿" 的场景在数据库的日常支持和使用中并不少见,但由于时区设置引发的 SQL 执行"卡顿"仍然是一个有趣的现象,之前 ...

  3. mysql时区设置gmt_将MySQL数据库时区设置为GMT

    不,不可能在MySQL实例中更改单个数据库的时区. 您可以检索服务器和客户端time_zone设置: SELECT @@global.time_zone, @@session.time_zone; 您 ...

  4. mysql 设置时区_MySQL实战干货 | 如何处理由时区设置引发的 SQL 执行“卡顿”?...

    作者:田杰,阿里云数据库高级运维专家 查询执行时间长引发应用感知 "卡顿" 的场景在数据库的日常支持和使用中并不少见,但由于时区设置引发的 SQL 执行"卡顿" ...

  5. linux - 时间时区设置

    关键词:时间 时区 docker时区设置 时间戳转换 北京时间 date 设置时区 TZ='Asia/Shanghai' TZ='Asia/Shanghai' date "+%F__%T__ ...

  6. php时区设置为prc还是错误,关于php时区时间错误问题的解决,以及Unix时间戳转换工具...

    什么是Unix时间戳(Unix timestamp): Unix时间戳(Unix timestamp),或称Unix时间(Unix time).POSIX时间(POSIX time),是一种时间表示方 ...

  7. mysql gmt格式_将MySQL数据库时区设置为GMT

    小编典典 不,不可能更改MySQL实例中单个数据库的时区. 我们可以time_zone通过查询来检索服务器和客户端设置,如下所示: SELECT @@global.time_zone, @@sessi ...

  8. linux下时区设置和时间同步

    一.时区设置: [root@master ~]# tzselect Please identify a location so that time zone rules can be set corr ...

  9. 关于Django的时区设置TIME_ZONE,USE_TZ的问题

    2019独角兽企业重金招聘Python工程师标准>>> 在Django的settings.py中,已经将时区设置成了: TIME_ZONE = 'Asia/Shanghai' USE ...

  10. MySQL 数据库时区设置方法,“The server time zone value ‘�й���׼ʱ��‘ is unrecognized or represents ...” 问题解决

    连接 mysql 数据库时提示如下异常,是时区问题导致的. An error occurred while establishing the connection:Long Message: The ...

最新文章

  1. 测试向量是否包含给定元素
  2. 关于数据存储的那些事1
  3. PropertyPathFacoryBean获取对象的值
  4. 数据交互智能终端设想
  5. HTML系列(四):编辑图像
  6. jmeter 控制偏离_Jmeter(二十) - 从入门到精通 - JMeter监听器 -下篇(详解教程)
  7. 解决硬盘磁道损坏问题(亲测)
  8. c++求两点的距离利用友元_「20525」高中数学:“二面角”和“点到平面的距离”的通解...
  9. Android 圆形进度条
  10. 求助ReportMachine报表,收集ReportMachine资料
  11. 基于SpringBoot的网页版进销存-2.0版本
  12. 个人不良资产如何处置?个人不良资产有妙招
  13. 中国城市乞丐的五大经典表情
  14. OOAD 3 迭代、进化和敏捷(Iterative,Evolutionary,and Agile)
  15. 如何设置微信公众号关注后自动回复多条图文链接
  16. 搞定IC卡(上)-IC卡基础
  17. ModelSim仿真入门之一:软件介绍
  18. kali linux怎么远程桌面,适用于kali linux的远程桌面开启方法(从windows xp 远程登录到kali linux )...
  19. SpringBoot整合Redis集群
  20. npm 淘宝镜像使用

热门文章

  1. maven搭建mybatis测试
  2. 字符串中单词去多余空格
  3. STP根交换机,指定端口,根端口,阻塞端口
  4. 由中缀表达式计算前缀表达式
  5. [ASP.NET 设计模式] 用Visual Studio2010搭建一个简单的分层结构示例Step by Step —— 06 用户界面层...
  6. TCP IP通讯三次握手四次挥手
  7. How to Build the Confidence Habit,7 Ways To Start To Value Yourself,Becoming More Me Through Meditat
  8. 永远不要低估自己,love your fear.
  9. Atitit java webservice客户端v2 目录 1.1. 生成stub代码wsimport.exe 1 1.2. Wsimport 2 1.3. clienttest 3 1.1
  10. Atitit 导航模式 面包屑 胶囊式 标签式tab 目录 1.1. 表格导航 1 2. 面包屑导航来源于童话故事中的汉塞尔利用面包屑来记录回家的路的故事 1 2.1.1. 格林童话《Hanse