Database SQLSTATE[23000]:完整性约束冲突:19即使在将必填字段设置为NULL后也不能为NULL

Database SQLSTATE[23000]:完整性约束冲突:19即使在将必填字段设置为NULL后也不能为NULL,database,laravel,controller,Database,Laravel,Controller,我已经使所有必需的字段都可以为空,但仍然会出现此错误 SQLSTATE[23000]:完整性约束冲突:19非空约束失败:公共\u问题。名称SQL:插入公共\u问题答案,帮助者\u id,帮助者\u名称,更新的\u at,创建的\u at值Hey Bro Everythings会没事的,2,kakashi,2020-07-30 07:35:052020-07-30 07:35:05 这是我的数据库:- 型号:- 我已将此字段分为两个功能,它们是:- 控制器 尝试执行应答函数时出错 无法找出原因,请

我已经使所有必需的字段都可以为空,但仍然会出现此错误

SQLSTATE[23000]:完整性约束冲突:19非空约束失败:公共\u问题。名称SQL:插入公共\u问题答案,帮助者\u id,帮助者\u名称,更新的\u at,创建的\u at值Hey Bro Everythings会没事的,2,kakashi,2020-07-30 07:35:052020-07-30 07:35:05

这是我的数据库:-

型号:-

我已将此字段分为两个功能,它们是:- 控制器

尝试执行应答函数时出错 无法找出原因,请帮助解决问题:

SQLSTATE[23000]:完整性约束冲突:19非空约束失败:public_problems.name

解决方案:

数据库中的名称文件不可为空。如果要调用create方法,则必须添加'name'=>'someName',或者将->null约束添加到name字段

PublicProblem::create([
            'answer' => $data['answer'],
            'helper_id' => Auth::user()->id,
            'helper_name' => Auth::user()->name,
            'name' => 'someName',
        ]);
请注意:

您还有一些字段不可为空,因此另一个字段可能会再次发生错误。我在下面评论它

$table->id();
$table->string('name'); //always needs a value
$table->integer('user_id')->unsigned(); //always needs a value
$table->text('answer')->nullable();
$table->integer('helper_id')->unsigned()->nullable();
$table->string('helper_name')->nullable();
$table->string('title'); //always need a value
$table->text('problem'); //always needs a value
$table->string('filled_by'); //always needs a value
问题:

SQLSTATE[23000]:完整性约束冲突:19非空约束失败:public_problems.name

解决方案:

数据库中的名称文件不可为空。如果要调用create方法,则必须添加'name'=>'someName',或者将->null约束添加到name字段

PublicProblem::create([
            'answer' => $data['answer'],
            'helper_id' => Auth::user()->id,
            'helper_name' => Auth::user()->name,
            'name' => 'someName',
        ]);
请注意:

您还有一些字段不可为空,因此另一个字段可能会再次发生错误。我在下面评论它

$table->id();
$table->string('name'); //always needs a value
$table->integer('user_id')->unsigned(); //always needs a value
$table->text('answer')->nullable();
$table->integer('helper_id')->unsigned()->nullable();
$table->string('helper_name')->nullable();
$table->string('title'); //always need a value
$table->text('problem'); //always needs a value
$table->string('filled_by'); //always needs a value
此处出错,您的姓名、标题、用户id、问题、填充人字段是必需的,请在迁移时将此填充字段设置为空,或者在插入表时应给出一个值,否则SQL将引发错误:

PublicProblem::create([
            'name' => "Name", // Not null
            'title' => "Title"; // Not null
            'problem' => "Problem", // Not null
            'filled_by' => "Filled by", // not null
            'user_id' => "1", // not null
            'answer' => $data['answer'],
            'helper_id' => Auth::user()->id,
            'helper_name' => Auth::user()->name,
        ]);
此处出错,您的姓名、标题、用户id、问题、填充人字段是必需的,请在迁移时将此填充字段设置为空,或者在插入表时应给出一个值,否则SQL将引发错误:

PublicProblem::create([
            'name' => "Name", // Not null
            'title' => "Title"; // Not null
            'problem' => "Problem", // Not null
            'filled_by' => "Filled by", // not null
            'user_id' => "1", // not null
            'answer' => $data['answer'],
            'helper_id' => Auth::user()->id,
            'helper_name' => Auth::user()->name,
        ]);

中的名称字段不可为空。如果您试图在回答功能中创建一个公共问题,那么您应该填写所有未填写的数据nullable@STA致命错误将由警卫负责,而不是由警察负责SQL@STA我已登录,我认为错误的原因是我应该使用一些插入方法,而不是在not nullable中创建name字段。如果您试图在回答功能中创建一个公共问题,那么您应该填写所有未填写的数据nullable@STA致命错误将由警卫负责,而不是由警察负责SQL@STA我已登录,我认为错误的原因是我应该使用一些插入方法而不是created。是否有任何插入方法可以替代createdcreate@AnonymousChatbox不,只要字段不可为空或没有默认值,就不可能value@AnonymousChatbox我会使它们为空,并在您的方法中验证所需的字段和只更新想要的字段..所以我应该保持整个字段为空,并将值设置为惰性required@AnonymousChatbox对在我看来,这就是解决问题的方法。有没有插入方法可以代替create@AnonymousChatbox不,只要字段不可为空或没有默认值,就不可能value@AnonymousChatbox我会使它们为空,并在您的方法中验证所需字段,只更新所需字段..所以我应该保留整个字段可为Null,且值无效,如下所示required@AnonymousChatbox是的,在我看来这是一条路