Mysql
 sql >> Database >  >> RDS >> Mysql

Migrazione Laravel - Violazione del vincolo di integrità:1452 Impossibile aggiungere o aggiornare una riga figlio:un vincolo di chiave esterna non riesce

Ho avuto lo stesso problema. Risolto il problema aggiungendo nullable in campo:

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

Nota che dopo la migrazione tutte le righe esistenti avranno some_id = NULL .

UPD :

Dato che Laravel 7 c'è un modo più breve per fare la stessa cosa:

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

È anche molto importante che nullable va PRIMA di constrained .

Puoi trovare maggiori informazioni qui, nella documentazione ufficiale