it-swarm.com.de

Laravel 4 migriert Rollback-Probleme

Ich kann die Handwerker-Migration usw. problemlos ausführen, aber wenn ich versuche, sie rückgängig zu machen, mit Migration: Rollback, bekomme ich diesen Fehler immer wieder.

c:\xampp\htdocs\laravel>php artisan migrate:rollback
{"error":{"type":"Symfony\\Component\\Debug\\Exception\\FatalErrorException","message":"Class 'CreateCodesnippetsTable' not found","file":"C:\\xampp\\htdocs\\laravel\\vendor\\laravel\\framework\\src\\Illum
inate\\Database\\Migrations\\Migrator.php","line":301}}

Ist das ein Fehler? oder wie soll ich das debuggen? 

71
Dexty

Vielleicht haben Sie dieses Problem bereits gelöst. Ich stelle jedoch fest, dass ein Rollback aus irgendeinem Grund oft composer dumpautoload zuerst ausführen muss. Auch wenn Ihre Migration funktioniert.

177
DerLola

Nachdem ich mich erst seit einigen Tagen mit diesem Problem auseinandergesetzt habe, kann ich jetzt die endgültige Antwort auf die Lösung dieses Problems geben. Ja, großer Anruf, den ich kenne, aber ertrage es mit mir.

Wenn Sie auf dieses Problem stoßen, müssen Sie zuerst composer dump-autoload ausführen. Dies sollte zu einer aktualisierten Version der Datei vendor/composer/autoload_classmap.php führen.

Wenn autoload_classmap.php nicht aktualisiert wird, liegt möglicherweise ein Berechtigungsproblem vor. In diesem Fall können Sie Sudo composer dump-autoload versuchen.

Wenn jedoch autoload_classmap.php aktualisiert wird , überprüfen Sie, ob es einen Eintrag für Ihre Migrationsklasse enthält (in diesem Fall CreateCodesnippetsTable) . Wenn für diese Klasse kein Eintrag vorhanden ist, sollten Sie Ihre composer.json -Datei überprüfen und sicherstellen, dass der app/database/migrations -Ordner im Autoload-Abschnitt enthalten ist, z.

"autoload": {
    "classmap": [
        "app/controllers",
        "app/models",
        "app/database/migrations"
    ]
},

Dieses letzte bisschen hat es für mich vermasselt. Bei einem fehlgeleiteten Versuch, Dinge zu optimieren, zog ich so viel wie möglich aus meiner composer.json -Datei, da ich naiv dachte, dies würde nur Webanforderungen betreffen. Es stellt sich heraus, dass auch dieser Artisan betroffen ist, also hat das Wiedereinsetzen dieser Zeile und das Ausführen von composer dump-autoload das Problem für mich behoben.

Wenn dies alles fehlschlägt, ist möglicherweise ein Fehler in einer der unterstützenden Bibliotheken aufgetreten, der das Problem verursacht. In diesem Fall können Sie versuchen, mit zu aktualisieren composer update oder eine Variation davon. Ich vermute jedoch, dass dies selten die wahre Ursache des Problems sein wird.

37
JamesG

Wenn Sie sich in Windows befinden, verwenden Sie einfach composer in Ihrem Terminal-/Befehlszeilenprogramm und führen Sie folgende Schritte aus:

composer dump-autoload

Ich hoffe es hilft!

13
bmnepali

Es scheint mir, dass es keine einzige Lösung für diesen Fehler gibt. Ich habe viele Vorschläge ausprobiert, aber zuletzt funktioniert dieser in meinem Ende.

COMPOSER=composer.json composer dump-autoload

enter image description here

8
Ahmad Sharif

Ich schätze, Sie haben den Klassennamen manuell geändert. Im Fehler haben Sie den Klassennamen CreateCodesnippetsTable, aber in der von Ihnen angegebenen Migrationsdatei (Pastebin) ist der Klassenname CreateCodeSnippetsTable (beachten Sie das S in Snippets Ich denke, das ist es, was Sie manuell geändert haben. 

Wenn Sie die Migrationstabelle in Ihrer Datenbank überprüfen, werden für jede Migration Datensätze angezeigt. Wenn Sie die Migration erstellen, wird die Datenbank mit diesem Namen in der Datenbank gespeichert. Die Rollback-Methode versucht, die Datei mit dem in der Datenbank angegebenen Namen zu lesen. Falls Sie sie manuell ändern, kann laravel die Klasse nicht finden und Sie erhalten der Fehler.

Um dies zu beheben, können Sie die Änderungen rückgängig machen und versuchen, die Migrationszeile in Ihrer Datenbank rückgängig zu machen oder manuell zu bearbeiten, um den korrekten Klassennamen aufzunehmen.

Hoffe das hilft.

8
Altrim

Ich habe es durch Laufen behoben

composer.phar update

4
Grasshopper

laden Sie die Datei composer.phar von der laravel-Site herunter, und rufen Sie die Datei composer.phar in das Stammverzeichnis des laravel-Ordners auf. Dann kommen Sie vom Terminal in das Stammverzeichnis von laravel und führen Sie das Update von composer.phar aus .Viel Glück

2
abu adeel

ich stand vor dem gleichen Problem und finde das Problem heraus 

Ich habe eine Migration für das Hinzufügen eines neuen Spaltendatums in der PatientReasonOfVisits-Tabelle erstellt Ich verwendete Laravel-Generatoren Beim Erstellen der Migration war der Klassenname 

class AddDateToPatientReasonOfVisitsTable

nachdem Sie eine neue Migrationsdatei erstellt haben, müssen Sie Composer Dump-Autoload ausführen, um sicherzustellen, dass die Datei in der Klassenzuordnungsdatei aufgeführt ist 

der Dateiname lautet 2014_09_02_214134_add_date_to_patientreasonofvisitstable.php

die Migration wurde erfolgreich durchgeführt und ein neuer Datensatz wurde in die Migrationstabelle eingefügt In der Migrationsspalte wird der Dateiname verwendet 

wenn ich die Migration rückgängig mache Ich habe die Klasse nicht gefunden. Ausnahme, welche Klasse nicht gefunden wird Diese 

AddDateToPatientreasonofvisitsTable

anmerkung: Der Unterschied zwischen den Klassennamen

warum und wie ich dieses Problem gelöst habe. Ich denke, wenn Sie den Klassennamen mit Hilfe des Migrationsdateinamens auflösen, der in der Migrationstabelle Die Groß- und Kleinbuchstaben durch Unterstriche "_" im Dateinamen festgelegt wird 

nach dem Umbenennen der Migrationsdatei in 2014_09_02_214134_add_date_to_patient_reason_of_visits_table.php und führen Sie den Composer dump-autoload nach dem Umbenennen der Datei korrekt aus Der Klassenname wurde ohne Ausnahme korrekt aufgelöst

1
Yehia

Ich habe einfach die Migrationstabelle fallen gelassen und dann "php artisan migrate: refresh" ausgeführt.

Dann konnten die Migrationen alle ausgeführt werden, nicht sicher, ob dies die beste Methode ist, aber es funktionierte für mich. 

Ich sanne Laravel 5, 

Viel Glück

0
idro2k