2017-06-26 7 views
0

Ich möchte eine weitere Spalte zu meiner Datenbank Tabelle Benutzer hinzufügen. Ich habe eine neue Migration mit dem Namen Modify_users_table erstellt, die den Code zum Hinzufügen der Spalte enthält. Es ist nichts falsch mit dem Quellcode, weil ich es vorher benutzt habe, aber es gibt mir einen Fehler, dass etwas mit den Tabellenrollen falsch ist? Wie kann ich das lösen? Hier ist der Fehler und der Code, der zu dem Fehler zusammenhängt enter image description hereLaravel-Fehler beim Migrieren

Hier wird die Migration Roles:

public function up() 
{ 
    Schema::create('roles', function (Blueprint $table) { 
     $table->string('role_name')->length(55)->unique(); 
     $table->increments('id'); 
     $table->timestamps(); 
    }); 
} 
+0

Es bedeutet, dass Ihre Rollentabellen bereits vorhanden sind, aber nicht in der Tabelle "migrations" vorhanden sind. Finden Sie heraus, warum das passiert ist und beheben Sie es mit einem Rollback oder Reset. (Dies wird jedoch alle vorhandenen Daten in den Tabellen entfernen.) – Robert

+0

Als allgemeine Faustregel gilt, dass es viel besser ist, Fehler als Text anstelle von Screenshots einzubeziehen. –

Antwort

0

Sie benötigen

php artisan migrate:rollback 

laufen, wenn das auch nur in ausfällt gehen und legen Sie alle Tabellen ab, die Sie möglicherweise ausführen müssen, da Ihre Migrationstabelle durcheinander geraten ist oder Ihre Rollentabellen die Tabelle nicht gelöscht haben, wenn Sie einen vorherigen Rollback ausgeführt haben.

oder können Sie migrate:reset Befehl verwenden, werden alle Ihre Anwendungen Migrationen Rollback:

php artisan migrate:reset 
-1

die Tabelle aus der Datenbank entfernen (ich habe es manuell das erste Mal, dass ich dieses Problem hatte)

und machen diese Änderung in der create_users_table Migration als solche

$table->string('email', 60)->unique(); 

und dies war für mich ..

Hoffe, das hilft Ihnen auch

2

Sie haben eine Reihe von Problemen. Ihr Hauptproblem besteht darin, dass Sie keine Spalte zu einer Tabelle hinzufügen. Ihr Skript versucht, stattdessen eine neue Tabelle zu erstellen, wie sie in dieser Linie zu sehen:

Schema::create('roles', function (Blueprint $table) { 

Sie sagten, Sie versuchen, eine Spalte in der Benutzer-Tabelle hinzufügen, aber Sie sind nicht einmal die Arbeit mit dem Benutzer Tabelle: Sie erstellen stattdessen eine Tabelle mit dem Namen roles, die bereits vorhanden ist. Die einfachste Lösung besteht darin, das zu tun, was Dhaval vorschlägt: Sie müssen die hinzugefügte Migration abbrechen, die Migration, die die Benutzertabellen erstellt, aktualisieren und neu starten.

Die "richtige" Antwort besteht darin, eine neue Migration zu erstellen und die Anweisungen zum Hinzufügen der Spalte zur Benutzertabelle sowie Anweisungen zum Entfernen hinzuzufügen. Dann können Sie einfach eine einfache Migration durchführen, anstatt Ihre Datenbank zu vernichten. Das würde ungefähr so ​​aussehen:

public function up() 
{ 
    Schema::table('users', function (Blueprint $table) { 
     $table->string('last_name')->after('first_name')->default(''); 
    }); 
} 

public function down() 
{ 
    Schema::table('users', function (Blueprint $table) { 
     $table->dropColumn(['last_name']); 
    }); 
} 
Verwandte Themen