Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Laravel-Migration – Integritätsbeschränkungsverletzung:1452 Eine untergeordnete Zeile kann nicht hinzugefügt oder aktualisiert werden:Eine Fremdschlüsselbeschränkung schlägt fehl

Ich hatte das gleiche Problem. Behoben durch Hinzufügen von nullable zum Feld:

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

Beachten Sie, dass nach der Migration alle vorhandenen Zeilen some_id = NULL haben werden .

UPD :

Seit Laravel 7 gibt es einen kürzeren Weg, dasselbe zu tun:

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

Es ist auch sehr wichtig, dass nullable kommt VOR constrained .

Weitere Informationen finden Sie hier, in der offiziellen Dokumentation