Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

333
Vistas
La restricción de clave externa se forma incorrectamente en Laravel

Estoy usando Laravel 7 y PHP 7.4.

Estoy trabajando en bases de datos y de repente me quedé atascado cuando intento generar una clave externa para el usuario en otra tabla. Debería ser un proceso inmediato y estoy siguiendo el documento, sigo recibiendo un error.

Error general: 1005 No se puede crear la tabla carchain_qrcode . sellers (errno: 150 "La restricción de clave externa está formada incorrectamente

Tabla de usuarios

 public function up() { Schema::create('users', function (Blueprint $table) { $table->bigInteger('id'); $table->string('name')->unique(); $table->string('email')->unique(); }); }

Tabla de vendedores

 public function up() { Schema::create('sellers', function (Blueprint $table) { $table->bigInteger('id'); $table->unsignedBigInteger('user_id'); $table->string('seller_name'); $table->string('seller_email'); $table->foreign('user_id') ->references('id')->on('users') ->onDelete('cascade'); });

¿Dónde me he equivocado?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Creo que el problema es que la identificación de la tabla de usuarios es bigInteger y no bigIncrements o unsignedBigInteger .
En Laravel 7, simplemente puede hacer: $tabla->id() para crear la columna de identificación.

over 4 years ago · Santiago Trujillo Denunciar

0

este error se produjo debido a un tipo de datos incorrecto utilizado en la clave externa que va a crear. El tipo de datos de clave principal en la users table debe ser el mismo que el tipo de datos que usó en la Sellers table como se muestra a continuación:

Tabla de usuarios

 $table->id();

Tabla de vendedores

 $table->unsignedBigInteger('user_id');

o si usó cualquier otro tipo de datos en la clave principal de la tabla de usuarios, entonces la clave externa en la otra tabla debería ser la misma en consecuencia.

over 4 years ago · Santiago Trujillo Denunciar

0

Breve : para una solución rápida, consulte la respuesta de @ Aless55. Lo principal a tener en cuenta es que los tipos de columna id y foreign_key deben coincidir.

Forma correcta : es mejor usar las API integradas de Laravel para crear primary key y foreign key . Más detalles aquí: automáticamente se encargará de los tipos de columna, creando índices, etc. Además, ceñirse a la documentación oficial facilita la comprensión del código por parte de otros y el mantenimiento por parte del desarrollador (es solo mi opinión).

En tu caso:

Tabla de usuarios

 public function up() { Schema::create('users', function (Blueprint $table) { $table->id(); $table->string('name')->unique(); $table->string('email')->unique(); }); }

Tabla de vendedores:

 public function up() { Schema::create('sellers', function (Blueprint $table) { $table->id(); $table->foreignId('user_id')->constrained(); // this will automatically detect which table to reference $table->string('seller_name'); $table->string('seller_email'); }); }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda