Bezpečné vrácení poslední migrace v systému Laravel

Jak bezpečně vrátit poslední migraci v Laravelu Vracení migrací zpět je běžnou součástí vývoje Laravelu, zejména při opakovaných změnách schématu. Nesprávný postup však může vést...

Poptat web

23. 10. 2025

Bezpečné vrácení poslední migrace v systému Laravel

Jak bezpečně vrátit poslední migraci v Laravelu

Vracení migrací zpět je běžnou součástí vývoje Laravelu, zejména při opakovaných změnách schématu. Nesprávný postup však může vést ke ztrátě dat nebo nekonzistentním stavům. Tento návod vysvětluje, jak bezpečně vrátit poslední migraci v Laravelu, kdy používat jednotlivé příkazy a jak správně zacházet s produkčním prostředím.

Kontrola stavu migrace

Před vrácením zpět vždy ověřte aktuální stav migrace:

php artisan migrate:status

Zobrazí se seznam všech migrací se sloupcem stavu (Ran?). Pomůže vám ověřit, které migrace jsou aktivní a do které dávky patří.

Simulace vrácení zpět bez provedení změn

Laravel poskytuje režim suchého spuštění pomocí volby --pretend. Tento příkaz zobrazí příkazy SQL, které by se provedly při zpětném přechodu, aniž by byly použity.

php artisan migrate:rollback --pretend

To je užitečné zejména pro ověření, k jakým změnám dojde před skutečným vrácením databáze. Pomáhá zabránit náhodné ztrátě dat nebo schématu.

Vrácení poslední migrace

Zpětné vrácení pouze poslední dávka migrací (poslední spuštění), použijte:

php artisan migrate:rollback

Zpětné vrácení pouze poslední migrace, použít:

php artisan migrate:rollback --step=1

Příklad

Pokud jste dosud provedli tři migrační dávky:

Dávka Migrace
1 2024_10_01_000000_create_users
2 2024_10_02_000000_create_posts
3 2024_10_03_000000_add_status_to_posts
3 2024_10_03_000000_add_slug_to_posts

Běh:

php artisan migrate:rollback

zruší pouze šarže 3 odstranění posledních dvou migrací.

Za běhu:

php artisan migrate:rollback --step=1

zruší pouze poslední migraci (2024_10_03_000000_add_slug_to_posts), čímž se odstraní poslední migrace.

Zpětné vrácení a opětovná migrace poslední migrace

vrácení poslední dávky a její okamžité opětovné použití (užitečné pro rychlou lokální iteraci):

php artisan migrate:refresh --step=1

Tento příkaz kombinuje vrácení a migraci do jedné akce, což je ideální pro testování nedávných změn schématu.

Bezpečný návrat do výroby

V produkčních prostředích mohou akce rollback způsobit. ztráta dat nebo prostoje. Laravel vyžaduje potvrzení, aby byl chráněn před náhodným opuštěním schématu:

php artisan migrate:rollback --force
php artisan migrate:rollback --step=1 --force

Bezpečná praxe

  • Vždy zálohovat databázi před vrácením do výroby.
  • Zajistěte, aby každá migrace down() metoda čistě vrací změny (např. vypustí sloupce, cizí klíče nebo tabulky, které byly vytvořeny v programu up()).
  • Použijte funkci Laravel Schema::hasTable() a Schema::hasColumn() kontroly, aby metody rollbacku byly idempotentní a nedocházelo k výjimkám.

Příklad metody Safe Down:

public function down()
{
if (Schema::hasColumn('posts', 'status')) {
Schema::table('posts', function (Blueprint $table) {
$table->dropColumn('status');
});
}
}

Závěrečný bezpečnostní kontrolní seznam

  1. Spustit migrate:status potvrdit, které migrace ovlivňujete.
  2. Použití režimu suchého běhu pomocí volby --pretend ověřit změny, aniž by byly skutečně spuštěny.
  3. Zajištění zálohování před vrácením zpět.
  4. Dvakrát zkontrolujte down() metody pro reverzibilitu a bezpečnost.
  5. Použijte --step a --force vlajky záměrně (nikdy ne naslepo).
  6. Pro výrobu, testování zpětných kopií ve staging první.

Původní článek publikoval Nabil Hassen.