Mysql 1292列';的日期时间值不正确;更新地址';

Mysql 1292列';的日期时间值不正确;更新地址';,mysql,laravel,laravel-6.2,Mysql,Laravel,Laravel 6.2,我已经在Laravel中创建了一个带有标准日期时间列的表: Schema::create('lists', function (Blueprint $table) { $table->bigIncrements('id'); $table->string('name'); $table->string('ref'); $table->string('provider'); $table->timestamps(); $

我已经在Laravel中创建了一个带有标准日期时间列的表:

Schema::create('lists', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->string('name');
    $table->string('ref');
    $table->string('provider');
    $table->timestamps();
    $table->softDeletes();

    $table->unique(['provider', 'ref']);
});
当我尝试用雄辩的语言创建一个简单的记录时:

List::updateOrCreate([
    'provider' => 'test',
    'ref'      => 'S4d3g'
], [
    'name' => 'Plan'
]);
我收到了以下消息(这是一个原始控制台输出,因此忽略缺少引号):

在数据库上以原始SQL手动运行查询也不起作用:

insert into `lists` (`provider`, `ref`, `name`, `updated_at`, `created_at`) values ('test', 'S4d3g', 'Plan', '2020-03-08 02:25:07', '2020-03-08 02:25:07')
我正在使用MySQL 5.7

令人费解的是,如果我将日期更改为凌晨2点以外的任何时间,它会起作用:

insert into `lists` (`provider`, `ref`, `name`, `updated_at`, `created_at`) values ('test', 'S4d3g', 'Plan', '2020-03-08 01:25:07', '2020-03-08 01:25:07')
insert into `lists` (`provider`, `ref`, `name`, `updated_at`, `created_at`) values ('test', 'S4d3g', 'Plan', '2020-03-08 03:25:07', '2020-03-08 03:25:07')

是什么导致了MySQL级别对时间戳上的凌晨2点的奇怪厌恶呢?

看来你是在美国,在一个时区

因此,今天不存在凌晨2点

2020年3月8日-夏令时开始

当当地标准时间即将达到
2020年3月8日星期日02:00:00时钟向前拨1小时至
2020年3月8日,星期日,当地夏令时03:00:00

2020年3月8日的日出和日落将比前一天晚约1小时。 晚上会有更多的光线

DATETIME
在MySQL中使用本地时间(时区可以通过多种方式设置),在您的情况下,它可能是您的本地时间,这就是您遇到此问题的原因。如果您实际上指的是UTC,则必须首先使用
set time_zone=“+00:00”
或通过设置正确的时间来将时区设置为UTC


由于您的PHP库正在生成此(无效)时间,我假设PHP和MySQL使用的时区不匹配。

这不是一个可复制的问题,而且MySQL的凌晨2点没有任何特殊之处。我很愿意相信这一点。我一生中从未见过这种情况发生,但我可以亲眼目睹它的发生。我甚至可以录制一个运行SQL raw的屏幕共享来演示。只是一个预感:在你们国家,夏令时是从今天开始的吗,时钟从凌晨1:59到凌晨3:00?这可以解释这个错误,因为那天凌晨2点根本不存在。@CherryDT这是我唯一可以解释这个错误的方法,而不用假设我在《暮光之城》的一集里。夏令时(也是荒谬的)即将到来。这是使用使用本地时区的
DATETIME
的恼人后果。(出于这个原因,我更喜欢
TIMESTAMP
)另外,想想DST结束时会发生什么-有两个2am-s,但在SQL中,您无法区分2A:00和2B:00,所以请做好准备!
insert into `lists` (`provider`, `ref`, `name`, `updated_at`, `created_at`) values ('test', 'S4d3g', 'Plan', '2020-03-08 01:25:07', '2020-03-08 01:25:07')
insert into `lists` (`provider`, `ref`, `name`, `updated_at`, `created_at`) values ('test', 'S4d3g', 'Plan', '2020-03-08 03:25:07', '2020-03-08 03:25:07')