sql >> Base de Datos >  >> RDS >> Mysql

Migración de Laravel:violación de restricción de integridad:1452 No se puede agregar o actualizar una fila secundaria:falla una restricción de clave externa

Yo tuve el mismo problema. Se solucionó agregando nullable al campo:

Schema::create('table_name', function (Blueprint $table) {
    ...
    $table->integer('some_id')->unsigned()->nullable();
    $table->foreign('some_id')->references('id')->on('other_table');
    ...
});

Tenga en cuenta que después de la migración, todas las filas existentes tendrán some_id = NULL .

UPD :

Desde Laravel 7 hay una forma más corta de hacer lo mismo:

$table->foreignId('some_id')->nullable()->constrained();

También es muy importante que nullable va ANTES de constrained .

Puede encontrar más información aquí, en documentación oficial