2016-04-05 2 views
0

Wenn ich php Handwerkers Migrate laufen halten i diesen Fehler:Allgemeiner Fehler: 1005 Can not create table

[Illuminate\Database\QueryException] SQLSTATE[HY000]: General error: 1005 Can't create table binomi . #sql-3910_c0b (errno: 150 "Foreign key constraint is incorrectly formed") (SQL: alter table users add constraint users_activity_foreign foreign key (activity) references activity (id) on delete cascade) [PDOException] SQLSTATE[HY000]: General error: 1005 Can't create table binomi . #sql-3910_c0b (errno: 150 "Foreign key constraint is incorrectly formed")

Hier ist das Schema für meine Benutzer und Aktivitätsmodell und das sind die einzigen Modelle die App.

Benutzermigration:

Schema::create('users', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->string('name'); 
     $table->string('email')->unique(); 
     $table->string('password'); 
     $table->integer('activity'); 
     $table->rememberToken(); 
     $table->timestamps(); 
    }); 

    Schema::table('users', function($table){ 
     $table->foreign('activity')->references('id')->on('activity')->onDelete('cascade'); 
    } 

Aktivität Migration:

Schema::create('activty', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->string('label'); 
    }); 
+0

Bemerkt die ";;" am Ende Ihrer Fremdschlüsselzeile? – Duikboot

+0

es ist nur ein Tippfehler @Duikboot –

Antwort

2

Fügen Sie den unsigned() Modifikator auf Ihre Fremdschlüsselspalte:

Schema::create('users', function (Blueprint $table) { 
     ... 
     $table->integer('activity')->unsigned(); 
     $table->rememberToken(); 
     $table->timestamps(); 
    }); 
+0

ja es hat funktioniert, danke :) –

1

Ihre Aktivitäten Tabelle einen Rechtschreibfehler hat, sagt es activty in Ihrem Schema-Erstellung. Außerdem würde ich vorschlagen, es activities umzubenennen, es sei denn, Sie haben nur einen.

+0

ich umbenenne es, nichts passierte –

+0

Hast du auch Sachen zurück? –

0

Die increments() automatisch als unsigned zugewiesen.

Also, stellen Sie sicher, dass Sie wie in den folgenden Code unsigned hinzufügen:

$table->integer('activity')->unsigned(); 

und auch überprüfen, ob Sie einen Tippfehler machen oder nicht