在Laravel工厂,我有:
'created_at' => now()->subDays(mt_rand(1,90))->subHours(mt_rand(1,23))->toDateTimeString()
以前这很好用,我认为是在Laravel 7.2上。“工作正常”是指我将其插入10.000s或更多行,但从未失败。更新到7.10.3之后,我现在得到以下错误:
SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '2020-03-29 02:10:11' for column 'created_at'
它实际上确实在失败之前插入了几百行,因此似乎是特定的日期或时间失败了。在实际插入的行中,有些还以2020-03-29作为日期,有些还以02:10:11作为时间,所以我不知道为什么这是“无效格式”。
2020年3月29日,欧洲开始实行夏令时(DST)。我假设您处于中欧时间(CET)时区,那里的时间从凌晨2点向前移动到凌晨1点,因此没有凌晨2:10,因此您的日期时间无效。
您有两种选择:
app.timezone
config键)。setTimezone(/* db timezone */)
在将Carbon实例转换为字符串之前对其进行调用(这将确保Carbon不会为数据库时区创建无效的日期时间)。本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句