Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Migração do Laravel - Violação de restrição de integridade:1452 Não é possível adicionar ou atualizar uma linha filho:uma restrição de chave estrangeira falha


Eu tive o mesmo problema. Corrigido adicionando nullable para Campo:
Schema::create('table_name', function (Blueprint $table) {
    ...
    $table->integer('some_id')->unsigned()->nullable();
    $table->foreign('some_id')->references('id')->on('other_table');
    ...
});

Observe que após a migração todas as linhas existentes terão some_id = NULL .

UPD :

Desde o Laravel 7, há uma maneira mais curta de fazer a mesma coisa:
$table->foreignId('some_id')->nullable()->constrained();

Também é muito importante que nullable vai ANTES de constrained .

Mais informações você encontra aqui, na documentação oficial