====== 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: - Ergänzen Sie Ihr Formular um den notwendigen CSRF-Token oder - 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 [[laravel:csrf|hier ausführlich erklärt]].