Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Migracja Laravel — naruszenie ograniczenia integralności:1452 Nie można dodać lub zaktualizować wiersza podrzędnego:ograniczenie klucza obcego nie powiodło się

Miałem ten sam problem. Naprawiono to przez dodanie nullable do pola:

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

Zwróć uwagę, że po migracji wszystkie istniejące wiersze będą miały some_id = NULL .

UPD :

Od Laravela 7 jest krótsza droga do zrobienia tego samego:

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

Bardzo ważne jest również, aby nullable przechodzi PRZED constrained .

Więcej informacji znajdziesz tutaj, w oficjalnej dokumentacji



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak opróżnić wszystkie wiersze ze wszystkich tabel w mysql (w sql)

  2. rails + MySQL na OSX:Biblioteka nie załadowana:libmysqlclient.18.dylib

  3. Przechowywanie numerów kart kredytowych w SESSION - sposoby na obejście tego?

  4. MySQL:Uzyskiwanie numeru wiersza (rankingu) dla określonego wiersza

  5. Jak mogę przetestować mój przykład wstrzykiwania PHP MySQL?