Benutzer-Werkzeuge

Webseiten-Werkzeuge


laravel:troubleshooting

Troubleshooting - mögliche Fehler und wie man sie beheben kann

Die nachfolgend aufgeführten Fehler sind bei meiner Entwicklung aufgetreten und wurden wie beschrieben behoben.


SQLSTATE 42000

Wenn bei Ihnen beim Ausführen von Artisan-Kommandio „migrate“ der SQLSTATE 42000 auftreten sollte hilft der auf der folgenden Seite beschriebene Fix: https://laravel-news.com/laravel-5-4-key-too-long-error


Foreign key constraint is incorrectly formed

Mögliche Ursache 1:

Überprüfen Sie, ob der in der Migration definierte Fremdschlüssel (foreign) wie im folgenden Beispiel als „unsigned“ angelegt wurde:

$table->bigInteger( 'Ziehung_id' ) -> unsigned();
$table->foreign( 'Ziehung_id' ) -> references( 'id' ) -> on( 'ziehungen' ) -> onDelete( 'cascade' );

Mögliche Ursache 2:

Überprüfen Sie, ob die Spalte für den Fremdschlüssel vom gleichen Typ ist wie die Spalte in der Fremdtabelle: Wenn also die „id“ vom Typ „bigIncrement“ ist muss der Fremdschlüssel vom Typ „bigInteger“ sein. Ist die „id“ hingegen vom Typ „increments“ muss der Fremdschlüssel mit „integer“ angegeben werden.


ReflectionException : Class does not exist

Sollte beim ersten Versuch, einen Seed anzulegen diese Fehlermeldung auftreten kann das Kommando „composer dump-autoload“ (z. B. in PHPStorm unter „Tools“ ⇒ „Composer“ ⇒ „Dump Autoloader…“ ausführbar) abhilfe schaffen.


Unknown Column 'updated_at'

Es macht längst nicht bei jeder Datenbank-Tabelle Sinn, die von Laravel angebotenen Timestamps zu setzen. Wenn in einer Migration die Timestamps 'created_at' und 'updated_at' durch die Funktion '$table→timestamps();' NICHT gesetzt wurden, muss auch das Eintragen in dem zugehörigen Model wie im folgendem Beispiel deaktivert werden:

class Ziehung extends Model
{
    protected $table = 'ziehungen';
    public $timestamps = false;
}

Wichtig hierbei ist, dass „timestamps“ auch wirklich auf die Sichtbarkeit „public“ gesetzt wird. Andernfalls gibt es eine entsprechende Fehlermeldung.


Datensatz wird nicht aktualisiert (es kommt aber keine Fehlermeldung)

Wenn ein Datensatz nach der „save“-Funktion auf einem Model nicht aktualisiert wird und (leider) keine Fehlermeldung von Laravel ausgegeben wird kann es sein, dass der Primary-Key nicht korrekt ist. Das passiert z. B., wenn eine bereits bestehende Tabellenstruktur in Laravel übernommen wird. Eloquent erwartet als Primary-Key Standardmäßig ein kleingeschriebenes „id“. Wenn die id der Tabelle jedoch groß geschrieben ist kann das Model um folgende Zeile ergänzt werden:

protected $primaryKey = 'ID';

419 - Page Expired

Sollte beim Aufruf einer Route der HTTP-Fehler 419 (Page Expired) zurückgegeben werden kann es an einem fehlenden CSRF-Token liegen. Zwei Lösungsvorschläge hierzu:

  1. Ergänzen Sie Ihr Formular um den notwendigen CSRF-Token oder
  2. Wenn die Anfrage von außen kommt und es keine Möglichkeit gibt den Token mitzuliefern (z. B. bei einem API-Aufruf) kann diese Route von der Überprüfung des Tokens ausgeschlossen werden.

Beide Lösungsmögichkeiten werden hier ausführlich erklärt.

laravel/troubleshooting.txt · Zuletzt geändert: 2020/08/22 22:24 von webproducer