Laravel 5.2 Entrust-Migrationsfehler, kann keine Fremdschlüsseleinschränkungen hinzufügen

8

Ich habe den Laravel 5.2 installiert und konfiguriert, funktioniert einwandfrei, für User ACL Ich habe das zizaco/entrust -Paket installiert, während ich den Befehl php artisan migrate ausgeführt habe (um roles , permissions table usw. zu erzeugen) / p>

  

[Illuminate \ Database \ QueryException] SQLSTATE [HY000]: Allgemein   Fehler: 1215 Kann keine Fremdschlüsseleinschränkung hinzufügen (SQL: alter table    role_user füge die Bedingung role_user_user_id_foreign Fremdschlüssel hinzu   ( user_id ) referenziert '' ( id ) auf die Löschkaskade beim Update   Kaskade)

     

[PDOException] SQLSTATE [HY000]: Allgemeiner Fehler: 1215 Kann nicht hinzufügen   Fremdschlüsselbedingung

Was könnte der Grund sein? Fehle ich etwas? Ich folgte der schrittweisen Richtlinie von der Seite

    
Qazi 12.03.2016, 10:56
quelle

2 Antworten

17

Ich habe das Problem behoben, indem ich die Migrationsdatei anvertraute, da users Tabellenname fehlte. siehe folgende Zeile

  

$ table- & gt; fremd ('user_id') - & gt; Verweise ('id') - & gt; on ( '' ) - & gt; onUpdate ('cascade') - & gt; onDelete ('cascade');

Also habe ich das geändert,

  

$ table- & gt; foreign ('user_id') - & gt; Verweise ('id') - & gt; on (' Benutzer ') - & gt; onUpdate ('cascade') - & gt ; onDelete ('cascade');

Ich habe den Tabellennamen users hinzugefügt und das Problem wurde behoben.

Grund, warum ich dieses Problem hatte?

in config/auth.php datei, es wurde kein 'table'=>'users' Schlüssel / Paar im Provider-Array erwähnt, siehe unten (dies ist Standard, bedeutet, wenn ein neues Laravel installiert ist)

%Vor%

Während der Befehl php artisan entrust:migration ausgeführt wird, wird der users -Tabellenname aus dem obigen Provider-Array abgerufen. Wenn in der Migrationsdatei keine Tabelle angegeben ist, werden die Beziehungsgruppen wie folgt leer gesetzt.

  

$ table- & gt; fremd ('user_id') - & gt; Verweise ('id') - & gt; on ( '' ) - & gt; onUpdate ('cascade') - & gt; onDelete ('cascade');

Fügen Sie also die Tabelle im Provider-Array wie folgt hinzu.

%Vor%

Nach diesem Befehl zum Ausführen der Migration php artisan entrust:migration wird die richtige Migrationsdatei generiert.

    
Qazi 12.03.2016, 11:18
quelle
1

Ich bekomme manchmal denselben Fehler, wenn ich versuche, Fremdschlüssel in derselben Migration hinzuzufügen (gleicher Schema::create -Block). Wenn ich eine Migration anlege, bei der ich eine neue Spalte erstelle:

%Vor%

Und dann setze ich diese Spalte in der gleichen Datei als Fremdschlüssel:

%Vor%

Es funktioniert perfekt.

Hoffe, das wird dir helfen.

    
Alexey Mezenin 12.03.2016 11:02
quelle

Tags und Links