SQLSTATE [23502]:非空违规:7 错误 - laravel

Posted

技术标签:

【中文标题】SQLSTATE [23502]:非空违规:7 错误 - laravel【英文标题】:SQLSTATE[23502]: Not null violation: 7 ERROR - laravel 【发布时间】:2021-09-18 01:57:30 【问题描述】:

以下是上传文件的 API。 它显示错误 -

SQLSTATE[23502]: Not null violation: 7 ERROR: null value in column \"Userid\" of relation \"files\" violates not-null constraint\nDETAIL: Failing row contains (7, null, Distance Learning Promo.mp4, null, null, null, 2021-07-07 13:38:07, 2021-07-07 13:38:07). (SQL: insert into \"files\" (\"FileName\", \"updated_at\", \"created_at\") values (Distance Learning Promo.mp4, 2021-07-07 13:38:07, 2021-07-07 13:38:07) returning \"id\").

Postman 显示状态500 internal status error

我不认为我的 Userid 列是 null 。请帮我提些建议

控制器

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Uploads;
use Illuminate\Support\Facades\Auth;

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();
        );

【问题讨论】:

请检查$dataToInsert['Userid'] = $request-&gt;bearerToken();是否有任何值 @JEJ 它具有价值。即使Userid 列也插入了这样的虚拟值-$dataToInsert['Userid'] =1,它也会显示相同的错误。 【参考方案1】:
 $dataToInsert['Userid'] = $request->bearerToken(); // error is here

if(!$dataToInsert['Userid'])
 return "Null value in userID";

检查 $dataToInsert['Userid'] 是否持有任何值。

还要确保您在标头中传递 BearerToken

【讨论】:

它具有价值。即使 Userid 列插入了一个像这样的虚拟值 - $dataToInsert['Userid'] =1 ,它也会显示相同的错误。 @MG 检查模型中的可填充项

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

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

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

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

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

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

Laravel:正确保存后返回重定向抛出 SQLSTATE [23000]:完整性约束违规