2016-04-01 15 views
5

Vorrei migrare una tabella con gli elementi seguenti.Laravel 5.0, migrazione: come rendere intero non una chiave primaria?

public function up() { 
    Schema::create('users', function(Blueprint $table) { 
     $table->increments('id'); 
     $table->integer('LoginID', 9)->unsigned(); 
     $table->string('username'); 
     $table->string('email')->unique(); 
     $table->string('password', 60)->unique(); 
     $table->rememberToken(); 
     $table->timestamps(); 
    }); 
} 

Tuttavia, ho continuato a gestire l'errore di seguito. Qualcuno sa come fare integer "non LoginID una chiave primaria in modo che possa migrare tabella sottostante? Qualche consiglio apprezzato. Grazie in anticipo.

[Illuminate\Database\QueryException]
SQLSTATE[HY000]: General error: 1 table "users" has more than one primary key (SQL: create table "users" ("id" integer not null primary key autoincrement, "LoginID" integer not null primary key autoincrement, "username" varchar not null, "email" varchar not null, "password" varchar not null, "remember_token" varchar null, "created_at" date time not null, "updated_at" datetime not null))

+0

qualcosa è fuori. Non c'è nulla nella migrazione che hai mostrato che possa far sì che LoginID sia una chiave primaria a incremento automatico. – patricus

+0

Non so la causa, ma ha funzionato poche ore dopo. – ILoveBaymax

risposta

0

Non dovresti chiamare

$table->primary('id'); 

? per contrassegnare colonna ID come chiave primaria

+0

Come si può vedere la query tenta di creare due chiavi primarie: '" id "intero non nullo autoincremento della chiave primaria," LoginID "intero non nullo chiave primaria autoincrement' – Daan

4

il problema è che si utilizza la funzione ->integer() con un secondo param secondo il docs il secondo parametro si aspetta un valore booleano per impostare autoincrement oppure no:. bool $autoIncrement = false).

Prova questo:

public function up() { 
    Schema::create('users', function(Blueprint $table) { 
     $table->increments('id'); 
     $table->integer('LoginID')->unsigned(); 
     $table->string('username'); 
     $table->string('email')->unique(); 
     $table->string('password', 60)->unique(); 
     $table->rememberToken(); 
     $table->timestamps(); 
    }); 
} 
Problemi correlati