Mysql SQLSTATE[22007]:无效的日期时间格式:1292不正确的日期时间值:“2019-03-31 01:52:25”

Mysql SQLSTATE[22007]:无效的日期时间格式:1292不正确的日期时间值:“2019-03-31 01:52:25”,mysql,mysql-5.7,Mysql,Mysql 5.7,我目前从多个生产数据库收到大量错误,我维护这些数据库,并说: SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '2019-03-31 01:49:45' for column 'created_at' at row 1 这是我的桌子: +------------+--------------+------+-----+-------------------+----------------+ |

我目前从多个生产数据库收到大量错误,我维护这些数据库,并说:

SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '2019-03-31 01:49:45' for column 'created_at' at row 1 
这是我的桌子:

+------------+--------------+------+-----+-------------------+----------------+
| Field      | Type         | Null | Key | Default           | Extra          |
+------------+--------------+------+-----+-------------------+----------------+
| id         | int(11)      | NO   | PRI | NULL              | auto_increment |
| log        | varchar(255) | YES  |     | NULL              |                |
| created_at | timestamp    | YES  |     | CURRENT_TIMESTAMP |                |
| updated_at | datetime     | YES  |     | NULL              |                |
+------------+--------------+------+-----+-------------------+----------------+
MySQL版本:

mysql  Ver 14.14 Distrib 5.7.25, for Linux (x86_64) using  EditLine wrapper
有人能帮我了解发生了什么事吗

更新: 我不知道发生了什么,但我收到了来自错误监视器的大量通知,现在一切都恢复正常,代码没有任何变化

错误开始于:2019-03-31 01:00:08 截止时间:2019-03-31 01:59:03

更新2: 好的,我是从葡萄牙来的,今天安排了一个+1小时的国家时间变更,我完全忘记了。。。 我怀疑这些错误是由于我的服务器或MySQL安装滞后于与新时间同步所致


如果其他人遇到同样的问题,我将把这个问题留待考虑

这是因为从那天开始的夏令时,所以凌晨1点到凌晨2点之间的所有时间都是无效的。您会发现问题实际上从“01:00:00”开始,到“01:59:59”结束:

create table t (created_at timestamp null default current_timestamp);
insert into t values('2019-03-31 00:59:59');
insert into t values('2019-03-31 01:00:00');
第1行“created_at”列的日期时间值不正确:“2019-03-31 01:00:00”

第1行“created_at”列的日期时间值不正确:“2019-03-31 01:59:59”

输出:

created_at
2019-03-31 00:59:59
2019-03-31 02:00:00

将您的系统时区更改为没有夏令时的时区可以解决问题。

这是因为从那天开始的夏令时,所以凌晨1点到凌晨2点之间的所有时间都是无效的。您会发现问题实际上从“01:00:00”开始,到“01:59:59”结束:

create table t (created_at timestamp null default current_timestamp);
insert into t values('2019-03-31 00:59:59');
insert into t values('2019-03-31 01:00:00');
第1行“created_at”列的日期时间值不正确:“2019-03-31 01:00:00”

第1行“created_at”列的日期时间值不正确:“2019-03-31 01:59:59”

输出:

created_at
2019-03-31 00:59:59
2019-03-31 02:00:00

将您的系统时区更改为没有夏令时的时区将解决此问题。

我在2020年3月29日(德国开始使用夏令时)重复了此问题。我在2020年3月29日(德国开始使用夏令时)重复了此问题。