Home > OS >  Error creating a migrate from a foreign key table (errno: 150 "Foreign key constraint is incorr
Error creating a migrate from a foreign key table (errno: 150 "Foreign key constraint is incorr

Time:08-24

In my migration operation I intend to create two tables: hunter and master, the table master contains the foreign key of hunter. When running php artisan migrate the following error occurs: SQLSTATE[HY000]: General error: 1005 Can't create table teste.master (errno: 150 "Foreign key constraint is incorrectly formed") (SQL: alter table master add constraint master_id_hunter_foreign foreign key (id_hunter) references id_hunters (id)), I don't understand what mistake i'm making.

Not to mention that when using php migration:rollback the master and migrations tables is not deleted.

  • Migration hunter

    public function up()
    {
        Schema::create('hunter', function (Blueprint $table) {
            $table->id('id_hunter');
            $table->string('name_hunter', 50);
            $table->integer('age_hunter');
            $table->decimal('weight_hunter', 5,2);
            $table->decimal('heigth_hunter', 3,2);
            $table->string('type_hunter', 30);
            $table->string('nen_hunter', 30);
            $table->string('type_blood', 3);
            $table->timestamp('date_insert')->useCurrent();
            $table->timestamp('date_update')->useCurrent()->useCurrentOnUpdate();
        });
    }
    
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('hunter');
    }

  • Migration master

    public function up()
    {
        Schema::create('master', function (Blueprint $table) {
            $table->id('id_master');
            $table->foreignId('id_hunter')->constrained();
            $table->string('name_master', 50);
            $table->string('nen_master', 30);
        });
    }
    
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('master');
    }

CodePudding user response:

add this to inside you master migration $table->foreign('id_hunter')->references('id_hunter')->on('hunter')->onDelete('cascade');

CodePudding user response:

In the migrate hunter file:

$table->id(); // Removed 'id_hunter'

In the migrate master file:

$table->id(); // Removed 'id_master'
$table->foreignId('id_hunter')->constrained('hunter'); // Added ´hunter´ in constrained()
  • Related