Integrity constraint violation: 1452 Cannot add or update a child row:
It just simply means that the value for column project_id
on table comments
you are inserting doesn't exist on table projects
. Bear in mind that the values of column project_id
on table comments
is dependent on the values of ID
on table Projects
.
The value 50dc845a-83e4-4db3-8705-5432ae7aaee3
you are inserting for column project_id
does not exist on table projects
.
Make sure you have project_id
in the fillable
property of your Comment
model.
I had the same issue, And this was the reason.
If you are adding new foreign key to an existing table and the columns are not null and not assigned default value, you will get this error,
Either you need to make it nullable
or assign default value
, or delete all the existing records
to solve it.
Also make sure that the foreign key you add is the same type of the original column, if the column you're reference is not the same type it will fail too.
I hope my decision will help. I had a similar error in Laravel. I added a foreign key to the wrong table.
Wrong code:
Schema::create('comments', function (Blueprint $table) {
$table->unsignedBigInteger('post_id')->index()->nullable();
...
$table->foreign('post_id')->references('id')->on('comments')->onDelete('cascade');
});
Schema::create('posts', function (Blueprint $table) {
$table->bigIncrements('id');
...
});
Please note to the function on('comments') above. Correct code
$table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade');