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

Laravel-migrering - Overtrædelse af integritetsbegrænsning:1452 Kan ikke tilføje eller opdatere en underordnet række:en fremmednøglebegrænsning mislykkes

Jeg havde samme problem. Rettede det ved at tilføje nullable til felt:

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

Bemærk, at efter migreringen vil alle eksisterende rækker have some_id = NULL .

UPD :

Siden Laravel 7 er der mere kort vej til at gøre det samme:

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

Det er også meget vigtigt, at nullable går FØR constrained .

Mere info kan du finde her i officielle dokumentation



  1. Skift datatype for en kolonne til seriel

  2. MySQL/skrivefilfejl (fejlkode 28)

  3. Advarsel:mysqli_stmt::bind_param():Antallet af variabler matcher ikke antallet af parametre i forberedt sætning

  4. Test af DML-erklæringer for OLTP i hukommelsen