====== 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]].