'Migrations fail but seems to be good in PHP LARAVEL
I get back:
SQLSTATE[HY000]: General error: 3780 Referencing column 'Categoria_id' and referenced column 'id' in foreign key constraint 'prodotti_categoria_id_foreign' are incompatible. (SQL: alter table
prodottiadd constraintprodotti_categoria_id_foreignforeign key (Categoria_id) referencescategorie(id))
but in my migrations data is:
// Categorie
public function up()
{
//
Schema::create('categorie', function (Blueprint $table) {
$table->unsignedBigInteger('id')->autoIncrement();
$table->string('Nome');
$table->enum('Status',['Active','Disabled']);
});
}
// Prodotti:
public function up()
{
//
Schema::create('prodotti', function (Blueprint $table) {
$table->id();
$table->string('Marca');
$table->string('Nome');
$table->string('Descrizione');
$table->bigInteger('EAN');
$table->bigInteger('MINSAN');
$table->timestamps();
$table->unsignedInteger('Categoria_id');
$table->foreign('Categoria_id')->references('id')->on('categorie');
});
}
Solution 1:[1]
Change the type of categoria_id as bellow;
$table->unsignedBigInteger('Categoria_id');
So it matches the foreign key.
Solution 2:[2]
In categoria, you have the following:
$table->unsignedBigInteger('id')->autoIncrement();
In prodotti you have this:
$table->unsignedInteger('Categoria_id');
Notice how the type are different, one is unsignedBigInteger and the other is unsignedInteger. You'll have to use the same type.
Edit:
Why is this an issue?
Because unsignedBigInteger can grow more than unsignedInteger therefore you'll be at a point where the mapping will no longer be supported as one will continue to grow, but the other will have hit it's limit.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Akmal Arzhang |
| Solution 2 |
