mysql 1264 错误 php程序代码如何避免

 Numeric value out of range: 1264 Out of range value for column 'end_time' at row 1 

在window上做开发,代码上传到linux做测试,数据插入提示错误,错误字段为时间字段数据库存int(10)时间戳,查到解决方案大多是修改mysql配置,求教php程序该怎么避免此错误

阅读 4.2k
6 个回答

原因是转时间的时候出现时间错误2099年,直接超过int最大值,想想还是放弃int改为bigint存储才是长久之计

你的数太大了,数据库存字段存不下,和你程序没什么关系。
如果强行要这么做的话,也不是不行,你把时间戳减掉一个大数,比如1500000000,得到的数到时足够小了,取出来你再加上去。但是这么做着实蠢了一点。

时间戳用bigint, int位数不够

你的时间戳多大? 过2038年了?

换成datetime类型, 或者改表字段类型为大数字.

你保存的单位不会是毫秒吧?
如果这样, 要改成bigint的.

提示是超过mysql int类型的存储范围了!unix时间戳不会超过一个int的吧? 检查你的php代码吧

一般来说存储时间戳使用 类型int(10)是足够的,你是不是没将这个类型定义为无符号类型?

`end_time` int(10) unsigned

无符号比有符号可是大了一倍哇,不可能不够用的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题