SQLSTATE [23502]:非空违规:7 Laravel API 错误

Posted

技术标签:

【中文标题】SQLSTATE [23502]:非空违规:7 Laravel API 错误【英文标题】:SQLSTATE[23502]: Not null violation: 7 Laravel API error 【发布时间】:2021-09-18 13:59:45 【问题描述】:

下面是一个上传文件的API,它显示如下错误。

SQLSTATE[23502]:非空违规:7 错误:关系“文件”的“用户 ID”列中的空值违反非空约束\n详细信息:失败行包含 (7,空,远程学习 Promo.mp4,空, 空, 空, 2021-07-07 13:38:07, 2021-07-07 13:38:07)。 (SQL: insert into "files" ("FileName", "updated_at", "created_at") 值 (远程学习 Promo.mp4, 2021-07-07 13:38:07, 2021-07-07 13:38:07 ) 返回 "id")

此外,Postman 显示状态 500 internal status error。我不认为我的Userid 列是空的。即使 Userid 列插入了一个像这样的虚拟值:$dataToInsert['Userid'] =1。此外,它显示相同的错误。

控制器

class UploadController extends Controller

    public function __construct()
    
        $this->middleware('auth:api');
    

    public function upload(Request $request)
    
        $file = $request->file('file_name');
        $fileName = $file->getClientOriginalName();
        $folder = uniqid() . '-' . now()->timestamp;
        $file->storeAs('public/other-document/' . $folder, $fileName);

        $filePath = $folder . '/' . $fileName;
        $dataToInsert = array();
        $dataToInsert['FileName'] = $fileName;
        $dataToInsert['FilePath'] = $filePath;
        if ($request->has('uploadType')) 
            $dataToInsert['FileType'] = $request->uploadType;
        
        $dataToInsert['uploadedBy'] = Auth::user()->id;
        $dataToInsert['Userid'] = $request->bearerToken();
        Uploads::create($dataToInsert);
    

迁移

Schema::create('files', function (Blueprint $table) 
    $table->id();
    $table->string('Userid');
    $table->string('FileName');
    $table->string('FilePath');
    $table->string('FileType');
    $table->integer('uploadedBy');
    $table->timestamps();
);

【问题讨论】:

Not null violation in Userid 所以请确保 $request->bearerToken(); 它会重新运行一些值并放置一些默认值 @KamleshPaul 这就是我尝试在该列中放置一些默认值但仍然显示相同错误的问题中添加的内容。 【参考方案1】:

我很抱歉。我还不会写cmets。但是您是否将字段添加到模型可填充数组? 我有一个类似的问题。那是因为我没有将该字段添加到模型的可填充数组中。

【讨论】:

以上是关于SQLSTATE [23502]:非空违规:7 Laravel API 错误的主要内容,如果未能解决你的问题,请参考以下文章

SQLSTATE [23000]:完整性约束违规:1048 laravel 5.7

Laravel 7 错误 - SQLSTATE [23000]:完整性约束违规:1048 列 'first_name' 不能为空

SQLSTATE [23000]:完整性约束违规:1452 无法添加或更新子行:外键约束失败 - Laravel

SQLSTATE[23000]:Laravel 中的完整性约束违规

Innobyte 插件问题:SQLSTATE [23000]:完整性约束违规:1452 无法添加或更新子行

SQLSTATE[23000]:完整性约束违规 1452 无法添加或更新子行:外键约束失败