Ich will
nur zum Rollback:
Rolled back: 2015_05_15_195423_alter_table_web_directories
ich renne
php artisan migrate:rollback
, 3 meiner Migration rollen zurück.
Rolled back: 2015_05_15_195423_alter_table_web_directories
Rolled back: 2015_05_13_135240_create_web_directories_table
Rolled back: 2015_05_13_134411_create_contacts_table
Ich lösche
sowohl mein web_directories
als auch mein contacts
Tisch ungewollt. Ich möchte nie, dass das passiert, und wenn ich nur diesen einen bestimmten Rollback durchführen kann, wird diese Katastrophe niemals passieren.
laravel
laravel-4
laravel-5
database-migration
cyber8200
quelle
quelle
Antworten:
Wenn Sie in Ihre
migrations
Tabelle schauen , sehen Sie, dass jede Migration eine Chargennummer hat. Wenn Sie also ein Rollback durchführen, wird jede Migration, die Teil des letzten Stapels war, zurückgesetzt.Wenn Sie nur die letzte Migration zurücksetzen möchten, erhöhen Sie einfach die Chargennummer um eins. Wenn Sie den
rollback
Befehl das nächste Mal ausführen , wird nur diese eine Migration zurückgesetzt, da sie sich in einem eigenen „Stapel“ befindet.quelle
migrations
SETbatch
= 2 WHEREmigration
= 'name_of_the_migration';Laravel 5.3+
Rollback einen Schritt. Nativ.
Und hier ist die Handbuchseite: docs .
Laravel 5.2 und früher
Keine Möglichkeit, ohne Ärger auszukommen. Weitere Informationen finden Sie in der Antwort von Martin Bean .
quelle
Bei jedem Rollback erhalten Sie den letzten Migrationsstapel. Verwenden Sie den Befehl
quelle
Wenn Sie nicht tun können, was @Martin Bean sagt, können Sie einen anderen Trick ausprobieren.
Erstellen Sie eine neue Migration und fügen Sie in diese Datei in der up () -Methode ein, was in der down () -Methode der Migration ist, die Sie zurücksetzen möchten, und in der down () -Methode, was in der up () -Methode eingefügt wird.
zB wenn Ihre ursprüngliche Migration so ist
Dann tun Sie dies in einer neuen Migrationsdatei
Wenn Sie dann die Migration ausführen, wird die Tabelle gelöscht. und wenn Sie das wieder zurück wollen, rollen Sie es einfach zurück.
quelle
besser zu verwenden aktualisieren aktualisieren migrieren
ansonsten verwendete Rollback-Migration
Weitere Informationen zur Migration finden Sie unter
quelle
Am besten erstellen Sie eine neue Migration und nehmen die erforderlichen Änderungen vor.
Problemumgehung im schlimmsten Fall ( wenn Sie Zugriff auf DB Plus haben, können Sie die Daten dieser Tabelle zurücksetzen ):
your-specific-migration
your-specific-migration
php artisan migrate --path=/database/migrations/your-specific-migration.php
Dadurch wird Laravel gezwungen, diese bestimmte Migration auszuführen, da in der Migrationshistorie von Laravel kein Eintrag darüber vorhanden ist
UPDATE : Der Laravel-Weg (Danke, @ thiago-valente)
Lauf:
php artisan migrate:rollback --path=/database/migrations/your-specific-migration.php
und dann:
php artisan migrate
Dadurch wird diese bestimmte Migration erneut ausgeführt
quelle
php artisan migrate:rollback --path=/database/migrations/your-specific-migration.php
Und schließlichphp artisan migrate
Es mag etwas spät sein, diese Frage zu beantworten, aber ich denke, hier ist eine sehr gute, saubere und effiziente Möglichkeit, dies zu tun. Ich werde versuchen, so gründlich wie möglich zu sein.
Erstellen Sie vor dem Erstellen Ihrer Migrationen verschiedene Verzeichnisse wie folgt:
Führen Sie dann beim Erstellen Ihrer Migrationen den folgenden Befehl aus (am Beispiel Ihrer Tabellen):
oder
oder
Mit den obigen Befehlen wird die Migrationsdatei innerhalb des angegebenen Verzeichnispfads erstellt. Anschließend können Sie einfach den folgenden Befehl ausführen, um Ihre Dateien über die ihnen zugewiesenen Verzeichnisse zu migrieren.
* Hinweis: Sie können batch_1 in batch_2 oder batch_3 oder einen beliebigen Ordnernamen ändern, in dem Sie die Migrationsdateien speichern. Solange dieser im Datenbank- / Migrationsverzeichnis oder in einem bestimmten Verzeichnis verbleibt.
Wenn Sie Ihre spezifischen Migrationen zurücksetzen müssen, können Sie wie unten gezeigt einen Stapel zurücksetzen:
oder
oder
Die Verwendung dieser Techniken ermöglicht Ihnen mehr Flexibilität und Kontrolle über Ihre Datenbank (en) und alle an Ihrem Schema vorgenommenen Änderungen.
quelle
Rollback einen Schritt. Nativ.
Rollback in zwei Schritten. Nativ.
quelle
Verwenden Sie den Befehl "php artisan migrate: rollback --step = 1", um die Migration auf 1 Schritt zurückzusetzen.
Weitere Informationen finden Sie unter folgendem Link: - https://laravel.com/docs/master/migrations#running-migrations
quelle
Wenn Sie die letzte Migration rückgängig machen möchten.
Wenn Sie eine bestimmte Migration rückgängig machen möchten, wechseln Sie zur Migrationstabelle und legen Sie den höchsten Wert dieses Datensatzes im Stapel fest. Dann.
Derzeit arbeite ich an Laravel 5.8. Wenn ich keine andere Version von Laravel arbeite, informieren Sie mich bitte.
quelle
Migrieren Sie Tabellen nacheinander.
Ändern Sie die Chargennummer der Migration, für die Sie ein Rollback durchführen möchten, auf die höchste.
Führen Sie migrate: rollback aus.
Möglicherweise nicht die bequemste Art, größere Projekte zu bearbeiten.
quelle
Wenn Sie die ursprüngliche Migrationsdatei ändern und erneut migrieren möchten, können Sie dieses Paket zum Migrieren verwenden. (Gilt für Laravel 5.4 oder höher)
Installieren Sie zunächst das Paket in Ihrem Laravel-Projekt:
Registrieren Sie den Befehl unter
app/Console/Kernel.php
:Führen Sie nun diesen Befehl aus, um Ihre Datei zu migrieren
quelle
php artisan:migrate --path=database/migrations/my_migration.php
. Stellen Sie kurz bevor Sie dies tun, sicher, dass diemigrations
Tabelle keinen Eintrag für hatmy_migration
.etwas wie das
quelle
1.) Gehen Sie in der Datenbank zur Migrationstabelle und löschen Sie den Eintrag der Migration, der sich auf die Tabelle bezieht, die Sie löschen möchten.
Beispiel für ein Migrationstabellenbild
2.) Löschen Sie als Nächstes die Tabelle, die sich auf die Migration bezieht, die Sie gerade aus Anweisung 1 gelöscht haben.
Beispiel für ein Tabellenbild löschen
3.) Nehmen Sie abschließend die gewünschten Änderungen an der Migrationsdatei der Tabelle vor, die Sie aus Anweisung Nr. 1 gelöscht haben. 2 Führen Sie dann aus
php artisan migrate
, um die Tabelle erneut zu migrieren.quelle
Wie im Laravel-Handbuch angegeben , können Sie mit dieser
--step
Option eine bestimmte Anzahl von Migrationen zurücksetzenquelle
Eine weitere Alternative zu den genannten, wenn Sie dies einige Male mit denselben Migrationen durchführen müssen. Persönlich denke ich, dass dies Ihren Migrationen viel Flexibilität verleiht.
Fügen Sie
database/migrations
Ihrem Autoload-Objekt Folgendes hinzucomposer.json
:Dann füge hinzu
namespace Database\Migrations;
dann alle Ihre Migrationsdateien hinzu.Dann laufen Sie
$ composer dump-autoload
, um Ihre zu aktualisierencomposer.lock
Datei .Unter der Annahme, dass Ihr Klassenname für die Migration lautet
AlterTableWebDirectories
, können Sie einen Befehl wie den folgenden erstellen:Und schreiben Sie diese Logik in Ihre
handle()
Methode:Dies wird genau das tun, was Sie wollen. Wenn Sie die Anzahl der Migrationen verringern möchten, anstatt sie zu löschen, können Sie wahrscheinlich herausfinden, wie Sie die Anzahl ändern können
DB:raw
Befehl .Dieser Befehl kann erweitert werden, damit Sie dynamisch auswählen können, welche Migration Sie löschen möchten, indem Sie ein Argument an den Befehl übergeben.
Wenn Sie dann lesen, um diese Datei erneut zu migrieren, können Sie sie einfach ausführen
php artisan migrate
und sie migriert nur diese.Mit diesem Prozess können Sie bestimmte Änderungen an Migrationen vornehmen, ohne jedes Mal eine vollständige Aktualisierung und einen Startwert vornehmen zu müssen.
Persönlich muss ich das viel tun, weil meine Samen ziemlich groß sind.
quelle
quelle
Wenn Sie Zugriff auf die Datenbank haben, haben Sie eine einfachere Lösung. Sie können den Datensatz aus der Migrationstabelle löschen und dann einfach die Tabelle löschen . mit SQL-Client.
Und kann verwenden
Wie viele Antworten. Und denken Sie daran, der Pfad ist Standort. Sie können sogar die Modulmigration auf diese Weise entfernen. (Jede Migration von anywhare)
Und denken Sie daran: Wenn Sie Linux-Server verwenden, achten Sie auf die Groß- und Kleinschreibung. Sie müssen like / Database / Migrations mit Startkapital hinzufügen .
quelle