Mysql
 sql >> Base de données >  >> RDS >> Mysql

Migration Laravel - Violation de la contrainte d'intégrité :1452 Impossible d'ajouter ou de mettre à jour une ligne enfant :une contrainte de clé étrangère échoue

J'ai eu le même problème. Corrigé en ajoutant nullable au champ :

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

Notez qu'après la migration, toutes les lignes existantes auront some_id = NULL .

UPD :

Depuis Laravel 7, il existe un moyen plus court de faire la même chose :

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

Il est également très important que nullable va AVANT constrained .

Vous trouverez plus d'informations ici, dans la documentation officielle