Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro ao criar chaves estrangeiras

Olá, estou obtendo o seguinte erro ao tentar rodar o comando migrate.

   Illuminate\Database\QueryException  : SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter table `seasons` add constraint `seasons_serie_id_foreign` foreign key (`serie_id`) references `series` (`id`))

Estas são as funções:

    public function up()
    {
        Schema::create('series', function(Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
        });
    }
    public function up()
    {
        Schema::create('seasons', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->integer('number');
            $table->bigInteger('serie_id');

            $table->foreign('serie_id')
                ->references('id')
                ->on('series');
        });
    }
    public function up()
    {
        Schema::create('episodes', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->integer('number');
            $table->bigInteger('season_id');

            $table->foreign('season_id')
                ->references('id')
                ->on('seasons');
        });
    }
2 respostas
solução!

Olá Matheus,

Acredito que a diferença nos tipos dos campos referenciados e os campos que referenciam seja a causa do erro.

O bigIncrements cria um campo do tipo bigInteger e unsigned, então acredito que esteja faltando apenas definir o seu serie_id como unsigned também.

Exemplo:

$table->bigInteger('serie_id')->unsigned();

Lembrando que o mesmo deve ser feito para a chave estrangeira season_id em episodes.

Testa se com essas mudanças resolve, qualquer dúvida é só falar!

Bom dia,

Era justamente esse o meu problema, obrigado!