2013-07-26 14 views
11

ho fatto una migrazione con questa configurazione:laravel errore 4 Migrazione - crea due chiavi primarie AUTO_INCREMENT campi

$table->increments('id'); 
$table->integer('user_id', 10)->unsigned(); // this is meant to be used as a foreign key 

Dopo aver fatto php artigianale migrare restituisce un errore:

[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()) 

non l'ho fatto specificare user_id per essere una chiave primaria auto_increment, ma la migrazione lo considera come tale.

Come posso creare una chiave esterna in Migrazioni?

risposta

21

@crynobone: il secondo parametro è per l'utilizzo booleano per determinare la chiave primaria, non esiste un'opzione di lunghezza per l'intero.

riferisco: https://github.com/laravel/laravel/issues/2212#issuecomment-21608193

+0

Quindi come si gestiscono le chiavi esterne? – jrenouard

+2

nvm, trova la risposta qui http://stackoverflow.com/questions/22077573/laravel-migration-will-not-add-foreign-key dovresti usare $ table-> intero ('app_group_id') -> length (10) -> senza segno(); in Laravel 4 – jrenouard

-2

Perché non specificare user_id chiave come primaria con auto-incremento?

$table->increments('user_id'); 
// other columns 
... 

schema costruttore creare user_id, che è lungo 10 cifre, non firmato & chiave primaria.

3

In Laravel 4, il secondo parametro nella funzione numero intero indica che la colonna intera deve essere incrementata automaticamente o meno (e quindi la chiave primaria o meno) Nel mio caso, per aggiungere un ID auto incrementato in una tabella lo scrivo come quello

$table->integer('id' , true); 

Crea una colonna intera di 11 cifre.

Problemi correlati