我使用Laravel迁移来创建users
表。它包含使用created_at
updated_at
和$table->timestamps();
字段
生成的表结构如下所示;
为什么两个时间戳字段都有默认值?就我而言,Laravel迁移$table->timestamps();
没有设置时间戳的默认值。
此外,created_at
字段"额外"已设置为on update CURRENT_TIMESTAMP
。我也不认为Laravel的迁移也是如此。
有谁知道MySQL为什么会这样做?我顺便使用 MySQL 5.7.10 。
更新:自Laravel v5.2.24起,默认情况下,时间戳已设为可为空,因此这不再是问题 - commit
答案 0 :(得分:1)
这与MySQL版本和严格模式之间的差异有关,特别是< = 5.6和5.7,因为默认情况下现在启用严格模式。见https://github.com/laravel/framework/issues/11518
现在的解决方案似乎是使用$table->nullableTimestamps()
或手动定义created_at
和updated_at
列,如下所示
$table->timestamp('created_at')->useCurrent();
$table->timestamp('updated_at')->useCurrent();