sql >> Databáze >  >> RDS >> Mysql

Migrace Laravel – porušení omezení integrity:1452 Nelze přidat nebo aktualizovat podřízený řádek:omezení cizího klíče se nezdaří

Měl jsem stejný problém. Opraveno přidáním nullable do pole:

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

Všimněte si, že po migraci budou mít všechny existující řádky some_id = NULL .

UPD :

Od Laravelu 7 existuje kratší způsob, jak udělat totéž:

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

Je také velmi důležité, aby bylo možné nullable jde PŘED constrained .

Další informace naleznete zde, v oficiální dokumentaci



  1. Proměnná tabulky PostgreSQL

  2. Zlepšení rychlosti dotazů:jednoduchý SELECT ve velké postgresové tabulce

  3. při inicializaci PDO - mám udělat:charset=UTF8 nebo charset=UTF8MB4?

  4. Architektura SQL Server AlwaysOn ( Availability Group ) a instalace krok za krokem -2