我将项目从5.2升级到了laravel 5.3。现在,当我要运行时php artisan migrate
,会收到错误消息:
SQLSTATE [22007]:无效的日期时间格式:1292错误的日期时间值:第1行的“ created_at”列的“ 0000-00-00 00:00:00”(SQL:alter table
messages
adddeleted_at
timestamp null)。
我的迁移:
Schema::table(Models::table('messages'), function (Blueprint $table) {
$table->softDeletes();
});
在Blueprint.php中:
public function softDeletes()
{
return $this->timestamp('deleted_at')->nullable();
}
Laravel 5.3已更新为默认情况下使用MySQL“严格”模式,其中包括该NO_ZERO_DATE
模式。
问题是您的现有数据被允许使用'0000-00-00 00:00:00'作为日期时间值。但是,现在您的连接正在使用不允许该值(NO_ZERO_DATE
)的sql模式。当您尝试更改表以添加deleted_at
列时,它抱怨列中现有的数据冲突created_at
。
理想的解决方案是修复数据库中的所有数据。也就是说,遍历数据库并更新datetime / timestamp字段,使其可以为空,然后将其数据从“ 0000-00-00 00:00:00”转换为null。
但是,快速选项是仅在数据库连接上禁用“严格”模式。打开config/database.php
文件,并确保数据库连接显示'strict' => false
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句