MariaDB 10.3插入合法Timestamp触发SQLSTATE[22007]错误排查
MariaDB 10.3插入Timestamp类型数据时的无效格式错误排查
错误信息
SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '2023-03-26 02:51:42' for column `db`.`table`.`column` at row 1 (SQL: insert into `column` (`clicked_at`) values (2023-03-26 02:51:42)
背景说明
- 目标字段为
timestamp类型,MariaDB官方说明该类型最大值为2038-01-19 05:14:07(受32位限制) - 插入的
2023-03-26 02:51:42为UTC时间,远小于上述最大值 - 代码未改动,服务商称数据库未被操作,错误突然出现13次
- 未启用Strict mode
可能的原因
- 夏令时切换导致的时间冲突:2023年3月26日是欧洲多数地区的夏令时切换日,若数据库服务器时区设为这类实行夏令时的时区(如CET/CEST),UTC的02:51:42转换为本地时间时会落入"缺失时段"(比如本地时间从02:00直接跳到03:00),这个不存在的时间点会被MariaDB判定为无效。
- 会话级时区临时变更:即使数据库全局配置未改,某个会话可能执行了
SET time_zone = 'xxx'临时修改时区,导致该会话下的时间解析出错,仅触发部分错误(13次)。 - 时间字符串的传输/解析异常:虽然代码逻辑未变,但驱动或网络传输可能偶发异常,导致实际传递给数据库的时间字符串格式损坏(比如字符丢失、格式错误),无法被正常解析。
- 系统时区文件更新:服务器系统的时区文件可能被静默更新,导致MariaDB对时间的解析规则发生变化,原本合法的时间被判定为无效。
- 数据库临时状态波动:MariaDB的某些临时内部状态异常(如缓存失效、锁冲突引发的解析逻辑异常),可能偶发导致时间解析错误,这类情况通常会自行恢复,对应仅出现13次错误的现象。
内容的提问来源于stack exchange,提问作者darkylmnx
相关产品推荐
相关产品推荐

