chcę
tylko do wycofania:
Rolled back: 2015_05_15_195423_alter_table_web_directories
biegnę
php artisan migrate:rollback
3 migracje są wycofywane.
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
kasuję
zarówno mój, jak web_directories
i mój contacts
stół przypadkowo. Nigdy nie chcę, aby tak się stało, a jeśli uda mi się przywrócić tylko ten konkretny, katastrofa nigdy się nie wydarzy.
laravel
laravel-4
laravel-5
database-migration
cyber8200
źródło
źródło
Odpowiedzi:
Jeśli zajrzysz do swojego
migrations
tabelę, zobaczysz, że każda migracja ma numer partii. Więc kiedy wycofujesz, przywraca każdą migrację, która była częścią ostatniej partii.Jeśli chcesz cofnąć tylko ostatnią migrację, po prostu zwiększ numer partii o jeden. Następnie następnym razem, gdy uruchomisz
rollback
polecenie, przywróci ono tylko jedną migrację, ponieważ jest ona „własną partią”.źródło
migrations
SETbatch
= 2 WHEREmigration
= 'name_of_the_migration';Laravel 5.3+
Cofnij się o jeden krok. Natywnie
A oto strona podręcznika: dokumenty .
Laravel 5.2 i wcześniejsze
Nie da się obejść bez kłopotów. Aby uzyskać szczegółowe informacje, sprawdź Martina Beana odpowiedź .
źródło
Za każdym razem, gdy wycofujesz, otrzymujesz ostatnią partię migracji. użyj polecenia
źródło
Jeśli nie możesz zrobić tego, co mówi @Martin Bean, możesz spróbować innej sztuczki.
Utwórz nową migrację i do tego pliku w metodzie up () wstaw metodę „down” metody migracji, którą chcesz wycofać, a metodą „down” wstaw metodę metody „up” ().
np. jeśli Twoja pierwotna migracja jest taka
następnie zrób to w nowym pliku migracji
a następnie uruchom migrację, usunie tabelę. a jeśli znowu chcesz to cofnąć, po prostu cofnij ją.
źródło
lepiej zastosować migrację odświeżania
w przeciwnym razie migracja zostanie cofnięta
Aby uzyskać więcej informacji na temat migracji zobacz
źródło
Najlepszym sposobem jest utworzenie nowej migracji i dokonanie w niej wymaganych zmian.
Obejście najgorszego przypadku ( jeśli masz dostęp do bazy danych DB i możesz zresetować dane z tej tabeli ):
your-specific-migration
your-specific-migration
php artisan migrate --path=/database/migrations/your-specific-migration.php
Zmusi to laravel do uruchomienia tej konkretnej migracji, ponieważ w historii migracji Laravela nie ma żadnego wpisu na jej temat
AKTUALIZACJA : The Laravel way (Thanks, @ thiago-valente)
Biegać:
php artisan migrate:rollback --path=/database/migrations/your-specific-migration.php
i wtedy:
php artisan migrate
Spowoduje to ponowne uruchomienie tej konkretnej migracji
źródło
php artisan migrate:rollback --path=/database/migrations/your-specific-migration.php
I wreszciephp artisan migrate
Odpowiedź na to pytanie może być trochę za późno, ale czuję, że jest to bardzo dobry, czysty i skuteczny sposób. Postaram się być tak dokładny, jak to możliwe.
Przed utworzeniem migracji utwórz różne katalogi:
Następnie podczas tworzenia migracji uruchom następujące polecenie (na przykład tabelach):
lub
lub
Powyższe polecenia utworzą plik migracji w ramach danej ścieżki katalogu. Następnie możesz po prostu uruchomić następujące polecenie, aby przeprowadzić migrację plików za pośrednictwem przypisanych katalogów.
* Uwaga: Możesz zmienić batch_1 na batch_2 lub batch_3 lub dowolną nazwę folderu, w którym przechowujesz pliki migracji. Tak długo, jak długo będzie on przechowywany w katalogu database / migrations lub w określonym katalogu.
Następnie, jeśli chcesz przywrócić określone migracje, możesz je wycofać wsadowo, jak pokazano poniżej:
lub
lub
Korzystanie z tych technik zapewni większą elastyczność i kontrolę nad bazą danych i wszelkimi modyfikacjami wprowadzonymi do schematu.
źródło
Cofnij się o jeden krok. Natywnie
Wycofaj dwa kroki. Natywnie
źródło
Użyj polecenia „php artisan migrate: rollback --step = 1”, aby cofnąć migrację do 1 kroku wstecz.
Aby uzyskać więcej informacji, sprawdź link: - https://laravel.com/docs/master/migrations#running-migrations
źródło
Jeśli chcesz cofnąć ostatnią migrację.
Jeśli chcesz przywrócić konkretną migrację, przejdź do tabeli migracji i ustaw najwyższą wartość tego rekordu wsadowo. Następnie.
Aktualnie pracuję na laravel 5.8, jeśli nie działa na żadnej innej wersji laravel, proszę o informację.
źródło
Migruj tabele jeden po drugim.
Zmień numer partii migracji, którą chcesz wycofać, na najwyższą.
Uruchom migrację: wycofanie.
Może nie być najwygodniejszym sposobem radzenia sobie z większymi projektami.
źródło
Jeśli chcesz zmodyfikować oryginalny plik migracji i przeprowadzić migrację ponownie, możesz użyć tego pakietu do migracji. (Dotyczy Laravel 5.4 lub nowszego)
Najpierw zainstaluj pakiet w swoim projekcie Laravel:
Zarejestruj polecenie w
app/Console/Kernel.php
:Teraz uruchom to polecenie, aby przeprowadzić migrację pliku
źródło
php artisan:migrate --path=database/migrations/my_migration.php
. Zanim to zrobisz, upewnij się, że wmigrations
tabeli nie ma wpisumy_migration
.coś takiego
źródło
1.) W bazie danych przejdź do tabeli migracji i usuń wpis migracji związany z tabelą, którą chcesz upuścić.
Przykład obrazu tabeli migracji
2.) Następnie usuń tabelę dotyczącą migracji, którą właśnie usunąłeś z instrukcji 1.
Usuń przykład obrazu tabeli
3.) Na koniec wprowadź zmiany w pliku migracji tabeli usuniętej z instrukcji nr. 2, a następnie uruchom
php artisan migrate
ponownie migrację tabeli.źródło
Jak stwierdzono w podręczniku Laravel , możesz wycofać określoną liczbę migracji za pomocą tej
--step
opcjiźródło
Inna alternatywa dla tych wymienionych, jeśli musisz to zrobić kilka razy z tymi samymi migracjami. Osobiście uważam, że zapewnia to dużą elastyczność migracji.
Dodaj
database/migrations
do obiektu autoload wcomposer.json
podobny sposób:Następnie dodaj
namespace Database\Migrations;
do wszystkich plików migracji.Następnie uruchom,
$ composer dump-autoload
aby odświeżyćcomposer.lock
plik.Następnie, zakładając, że twoja nazwa klasy dla migracji to
AlterTableWebDirectories
, możesz utworzyć następującą komendę:I napisz tę logikę w swojej
handle()
metodzie:To zrobi dokładnie to, co chcesz. Jeśli chcesz zmniejszyć liczbę migracji zamiast ją usunąć, prawdopodobnie możesz dowiedzieć się, jak to zmienić
DB:raw
polecenie.To polecenie można rozszerzyć, aby umożliwić Ci dynamiczny wybór migracji, którą chcesz upuścić, przekazując argument do polecenia.
Następnie, gdy czytasz, aby ponownie migrować ten plik, możesz po prostu uruchomić
php artisan migrate
a on migruje tylko ten jeden.Ten proces umożliwia wprowadzanie określonych zmian w migracji bez konieczności pełnego odświeżania i inicjowania za każdym razem.
Osobiście muszę to często robić, ponieważ moje nasiona są raczej duże.
źródło
źródło
Jeśli masz dostęp do bazy danych, masz łatwiejsze rozwiązanie. Możesz usunąć rekord z tabeli migracji, a następnie po prostu upuścić tabelę. z klientem SQL.
I można użyć
Jak wiele odpowiedzi. I pamiętaj, że ścieżka to Lokalizacja. Możesz usunąć nawet migrację modułów w ten sposób. (Każda migracja z dowolnego miejsca)
I pamiętaj, jeśli używasz serwerów linux, uważaj na rozróżnianie wielkości liter. Musisz dodać like / Database / Migrations z kapitałem początkowym.
źródło