seeds - Error de migración de Laravel 4: crea dos campos de claves primarias de auto_increment
migrate seed laravel 5 (3)
Hice una migración con esta configuración:
$table->increments(''id'');
$table->integer(''user_id'', 10)->unsigned(); // this is meant to be used as a foreign key
Después de hacer php artesanal migrate, devuelve un error:
[Exception]
SQLSTATE[42000]: Syntax error or access violation: 1075 Incorrect table definition;
there can be only one auto column and it must be defined as a key (SQL: create table `transactions` (`id` int unsigned not null auto_increment primary key, `user_id` int unsigned not null auto_increment primary key) default character set utf8 collate utf8_unicode_ci) (Bindings: array ())
No especifiqué que user_id fuera una clave primaria de auto_increment, pero Migration lo trata como tal.
¿Cómo puedo crear una clave externa en Migraciones?
¿Por qué no especificar user_id
como clave principal con autoincrement?
$table->increments(''user_id'');
// other columns
...
El generador de esquemas crea user_id
, que tiene 10 dígitos de longitud, sin signo y clave principal.
@crynobone: El segundo parámetro es para uso booleano para determinar la clave principal, no hay opción de longitud para el entero.
Consulte aquí: https://github.com/laravel/laravel/issues/2212#issuecomment-21608193
En Laravel 4, el segundo parámetro en la función entera es para indicar que la columna entera debe autoincrementarse o no (y por lo tanto, la clave primaria o no) En mi caso, para agregar una identificación autoincrementada en una tabla, la escribo así
$table->integer(''id'' , true);
Crea una columna entera con 11 dígitos.