首页 > 解决方案 > 在 Nova 中上传图像导致 SQL 一般错误:1364 字段没有默认值

问题描述

鉴于 Nova 类

class Article extends Resource
{
    // [...]
    public function fields(Request $request)
    {
        return [
            ID::make()
                ->sortable(),

            Image::make('Image', 'filename')
                ->disk('public')
                ->path('articles')
                ->prunable(),
        ];
    }
    // [...]
}

为什么上传图片时会出现此错误?

SQLSTATE[HY000]: General error: 1364 Field 'filename' doesn't have a default value (SQL: insert into `article` (`id`, `updated_at`, `created_at`) values (143, 2021-06-07 12:35:36, 2021-06-07 12:35:36))

有些图片可以上传,有些则不能。这不是由于它们的文件类型,因为某些 .png 有效,但其他无效。

标签: phplaravellaravel-nova

解决方案


此错误消息具有误导性。问题是文件大小:当它大于 3MB 时,它会抛出这个错误。

我建议在字段本身添加帮助消息,直到 Laravel Nova 使用更清晰的消息,如下所示:

Image::make('Image', 'filename')
    ->disk('public')
    ->path('teacher_images/source')
    ->prunable()
    ->help('Size: 3MB maximum')

推荐阅读