sql >> Databasteknik >  >> RDS >> Mysql

Laravel-migrering - Överträdelse av integritetsbegränsning:1452 Kan inte lägga till eller uppdatera en underordnad rad:en främmande nyckel-begränsning misslyckas

Jag hade samma problem. Fixade det genom att lägga till nullable till fält:

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

Observera att efter migreringen kommer alla befintliga rader att ha some_id = NULL .

UPD :

Sedan Laravel 7 finns det mer kort väg att göra samma sak:

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

Det är också mycket viktigt att nullable går INNAN constrained .

Mer information hittar du här, i officiell dokumentation



  1. Är det bra att använda ContentProvider för att hantera databasoperationer?

  2. How Now() fungerar i PostgreSQL

  3. Ersätt dubblettutrymmen med ett enda utrymme i T-SQL

  4. Använder SQL Server som en DB-kö med flera klienter