Ich führe Migrationen in Laravel durch und dieser Fehler tritt auf, wenn ich mit dem Befehl fortfahre PHP artisan migrate
:
In Connection.php Zeile 664:
SQLSTATE[HY000]: Allgemeiner Fehler: 3780 Die referenzierende Spalte „user_id“ und die referenzierte Spalte „id“ in der Fremdschlüsseleinschränkung „almacen_movimientos_user_id_foreign“ sind nicht kompatibel. (SQL: Tabelle ändern
almacen_movimientos
Einschränkung hinzufügenalmacen_movimientos_user_id_foreign
Unbekannter Schlüssel (user_id
) Verweiseusers
(id
) auf Löscheinschränkung)
In PDOStatement.php Zeile 129:
SQLSTATE[HY000]: Allgemeiner Fehler: 3780 Die referenzierende Spalte „user_id“ und die referenzierte Spalte „id“ in der Fremdschlüsseleinschränkung „almacen_movimientos_user_id_foreign“ sind nicht kompatibel.
Meine Migrationen sehen so aus:
almacen_movimientos-Tabelle
public function up()
{
Schema::create('almacen_movimientos', function (Blueprint $table) {
$table->unsignedBigInteger('id');
$table->integer('cliente_proveedor_id');
$table->integer('empresa_id');
$table->integer('user_id');
$table->enum('tipo' , ['ENTRADA' , 'SALIDA' , 'REUBICACION' , 'TRASPASO' , 'DEVOLUCION' , 'MSRO' , 'ENTRADA POR TRASPASO' , 'SALIDA POR TRASPASO'])->nullable();
$table->string('referencia' , 255)->nullable();
$table->string('observaciones' , 255)->nullable();
$table->timestamp('created_at');
$table->timestamp('updated_at');
$table->timestamp('deleted_at');
$table->string('transportista' , 255)->nullable();
$table->string('operador' , 255)->nullable();
$table->string('procedencia' , 255)->nullable();
$table->integer('almacen_id')->nullable();
$table->foreign('cliente_proveedor_id')->references('id')->on('empresas')->onDelete('restrict');
$table->foreign('empresa_id')->references('id')->on('empresas')->onDelete('restrict');
$table->foreign('user_id')->references('id')->on('users')->onDelete('restrict');
$table->foreign('almacen_id')->references('id')->on('almacenes')->onDelete('restrict');
});
}
Benutzertabelle
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->unsignedBigInteger('id');
$table->string('name' , 255);
$table->string('apellido_paterno' , 115)->nullable();
$table->string('apellido_materno' , 115)->nullable();
$table->dateTime('fecha_nacimiento')->nullable();
$table->string('telefono1' , 10)->nullable();
$table->string('telefono2' , 10)->nullable();
$table->string('calle' , 255)->nullable();
$table->string('numero' , 45)->nullable();
$table->string('colonia' , 255)->nullable();
$table->string('codigo_postal' , 6)->nullable();
$table->string('email' , 255)->unique();
$table->string('user' , 20)->nullable()->unique();
$table->string('password' , 255);
$table->string('palabra_secreta' , 255);
$table->string('remember_token' , 100)->nullable();
$table->unsignedInteger('empresa_id')->nullable();
$table->timestamp('created_at');
$table->timestamp('updated_at');
$table->timestamp('deleted_at');
$table->foreign('empresa_id')->references('id')->on('empresas')->onDelete('restrict');
});
}
Kann mir jemand sagen, was ich falsch mache? Ich kann das nicht beheben.
Danke schön.
Grüße.
Der Typ des Fremdschlüssels muss genau mit der ID übereinstimmen, auf die wir verweisen möchten. In diesem Fall müssen Sie den Typ der Fremdschlüsselspalten in den Typ „unsignedBigInteger“ ändern.
– Tohid Dadashnezhad
25. August 2020 um 19:10 Uhr
Und vergessen Sie nicht, php artisan migrate:fresh auszuführen, um die gesamten Tabellen neu zu erstellen.
– Tohid Dadashnezhad
25. August 2020 um 19:11 Uhr
Benutze das
$table->unsignedBigInteger('user_id')->nullable();
– Sobir
25. August 2020 um 19:22 Uhr
Zeigt immer noch den gleichen Fehler 🙁
– Rodri6uez
25. August 2020 um 19:41 Uhr
$table->id(); //UNSIGNED BIG INTEGER
So$table->unsignedBigInteger('empresa_id')
– Muhammad Shahzad
5. Mai 2021 um 18:56 Uhr