timestamps(); 创建的 生成的表结构如下-6ren">
gpt4 book ai didi

MySQL修改了时间戳字段的 "Default"和 "Extra"值

转载 作者:行者123 更新时间:2023-11-29 11:48:04 26 4
gpt4 key购买 nike

我正在使用 Laravel 迁移来创建 users 表。它有 created_atupdated_at 字段,这些字段是使用 $table->timestamps();

创建的

生成的表结构如下所示;

enter image description here

为什么两个时间戳字段都有默认值?就我而言,Laravel 迁移 $table->timestamps(); 没有设置时间戳的默认值。

此外,created_at 字段的“Extra”已设置为更新时 CURRENT_TIMESTAMP。我认为 Laravel 迁移也没有设置这个。

有谁知道为什么 MySQL 会这样?顺便说一句,我正在使用 MySQL 5.7.10

更新: 从 Laravel v5.2.24 开始,时间戳默认可为空,因此这不再是问题 - commit

最佳答案

这与 MySQL 版本和严格模式之间的差异有关,特别是 <= 5.6 和 5.7,因为现在默认启用严格模式。请参阅https://github.com/laravel/framework/issues/11518

目前的解决方案似乎是使用 $table->nullableTimestamps() 或手动定义 created_atupdated_at 列,如下所示

$table->timestamp('created_at')->useCurrent();
$table->timestamp('updated_at')->useCurrent();

关于MySQL修改了时间戳字段的 "Default"和 "Extra"值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34570808/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com