2013-02-18 12 views
5

Ich versuche, eine neue Migration für meine Benutzer-Tabelle zu erstellen, ich habe folgendes Schema:Laravel 4 - Artisan Fehler SQLSTATE [42000]

 Schema::create('users', function($t) { 
      $t->increments('id'); 
      $t->string('username', 16); 
      $t->string('password', 64); 
      $t->integer('role', 64); 
      $t->timestamps(); 
    }); 

Wenn ich versuche, PHP Handwerker wandert aus dem Terminal zu laufen, ich erhalte den folgenden Fehler:

[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 users (id int unsigne d not null auto_increment primary key, username varchar(16) not null, password varchar(64) no t null, role int not null auto_increment primary key, created_at timestamp default 0 not null , updated_at timestamp default 0 not null)) (Bindings: array (
))

der Fehler hat etwas mit dem ‚Rolle‘ Feld zu tun, als wenn diese entfernt wird es gut zu laufen scheint.

Vielen Dank im Voraus für jede Hilfe oder Einsicht.

+0

Warum setzt das generierte SQL 'role' auf' auto_increment primary key'? Was ist falsch daran, dass "id" die einzige Spalte "auto_increment primary key" ist? –

Antwort

13

Der zweite Parameter für integer ist ein Autoinkrement-Flag.

public function integer($column, $autoIncrement = false, $unsigned = false) 

https://github.com/laravel/framework/blob/5.4/src/Illuminate/Database/Schema/Blueprint.php#L510

+0

toll, danke für die Hilfe und Ressource :) Hat den Trick! – ChrisBratherton

+0

@TheRabbitFactory, ich weiß, es ist eine Weile her, aber weißt du, was ich tun muss, weil ich das gleiche Problem habe wie du – Thom

+0

Ich erinnere mich nicht wirklich, aber ich denke, dass ich diesen zweiten Parameter im Grunde vermisste. – ChrisBratherton

0
$t->integer('role', false); 

es das behebt.

+3

Können Sie erklären, warum das Problem behoben wird? –

+0

Antwort ohne Erklärung nützen nichts. –

+0

durch Einstellung von Integer auf false Ich deaktiviere autoIncrement deshalb umgehen wir Fehler. –

0

Längenattribut von Integer ist nicht zulässig. Entfernen Sie es und versuchen Sie es.