pour revenir en arrière uniquement:
Rolled back: 2015_05_15_195423_alter_table_web_directories
php artisan migrate:rollback
, 3 de ma migration sont en train de revenir en arrière.
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
mon web_directories
et mon contacts
table involontairement. Je ne veux jamais que cela se produise, et si je ne peux que revenir en arrière sur ce problème en particulier, ce désastre ne se produira jamais.
Si vous consultez la table migrations
, vous verrez que chaque migration porte un numéro de lot. Ainsi, lorsque vous annulez, chaque migration faisant partie du dernier lot est annulée.
Si vous souhaitez uniquement annuler la toute dernière migration, incrémentez simplement le numéro de lot d'une unité. Ensuite, la prochaine fois que vous exécuterez la commande rollback
, elle ne fera que restaurer cette migration, car elle constitue un "lot" distinct.
Chaque fois que vous annulez, vous obtenez le dernier lot de migration. utiliser la commande
php artisan migrate:rollback --step=1
Si vous ne pouvez pas faire ce que @Martin Bean dit, vous pouvez essayer un autre tour.
Créez une nouvelle migration et sur ce fichier dans la méthode up () insérez ce qui est dans la méthode down () de la migration que vous souhaitez annuler et dans la méthode down () insérez ce qui est dans la méthode up ().
par exemple, si votre migration d'origine est comme ça
public function up()
{
Schema::create('users', function(Blueprint $table)
{
$table->increments('id')->unsigned();
$table->string('name');
});
}
public function down()
{
Schema::drop('users');
}
puis dans un nouveau fichier de migration faire ceci
public function up()
{
Schema::drop('users');
}
public function down()
{
Schema::create('users', function(Blueprint $table)
{
$table->increments('id')->unsigned();
$table->string('name');
});
}
puis lancez la migration, cela supprimera la table. et si vous voulez encore une fois revenir en arrière, annulez-le.
Je pense qu'il est peut-être un peu tard pour répondre à cette question, mais voici une façon très efficace, propre et efficace de le faire. Je vais essayer d'être aussi complet que possible.
Avant de créer vos migrations, créez différents répertoires comme ceci:
database
|
migrations
|
batch_1
batch_2
batch_3
Ensuite, lors de la création de vos migrations, exécutez la commande suivante (en utilisant vos tables comme exemple):
php artisan make:migration alter_table_web_directories --path=database/migrations/batch_1
ou
php artisan make:migration alter_table_web_directories --path=database/migrations/batch_2
ou
php artisan make:migration alter_table_web_directories --path=database/migrations/batch_3
Les commandes ci-dessus créeront le fichier de migration dans le chemin de répertoire indiqué. Ensuite, vous pouvez simplement exécuter la commande suivante pour migrer vos fichiers via leurs répertoires attribués.
php artisan migrate alter_table_web_directories --path=database/migrations/batch_1
* Remarque: vous pouvez modifier batch_1 en batch_2 ou batch_3 ou le nom du dossier dans lequel vous stockez les fichiers de migration. Tant qu'il reste dans le répertoire database/migrations ou dans un répertoire spécifié.
Ensuite, si vous devez annuler vos migrations spécifiques, vous pouvez effectuer une restauration par lot, comme indiqué ci-dessous:
php artisan migrate:rollback --step=1
or try
php artisan migrate:rollback alter_table_web_directories --path=database/migrations/batch_1
ou
php artisan migrate:rollback --step=2
or try
php artisan migrate:rollback alter_table_web_directories --path=database/migrations/batch_2
ou
php artisan migrate:rollback --step=3
or try
php artisan migrate:rollback alter_table_web_directories --path=database/migrations/batch_3
L'utilisation de ces techniques vous permettra plus de flexibilité et de contrôle sur vos bases de données et toutes les modifications apportées à votre schéma.
Utilisez la commande "php artisan migrate: rollback --step = 1" pour restaurer la migration en une étape.
Pour plus d'informations, consultez le lien: - https://laravel.com/docs/master/migrations#running-migrations
Faites un retour en arrière une étape. Nativement.
php artisan migrate:rollback --step=1
Revenir en arrière en deux étapes. Nativement.
php artisan migrate:rollback --step=2
préférable d'utiliser actualiser migrer
Vous pouvez annuler et remigrer un nombre limité de migrations en fournissant l'option step à la commande d'actualisation. Par exemple, la commande suivante va restaurer et remigrer les deux dernières migrations:
php artisan migrate:refresh --step=2
sinon utilisé annuler la migration
Vous pouvez annuler un nombre limité de migrations en fournissant l'option step à la commande rollback. Par exemple, la commande suivante annulera les trois dernières migrations:
php artisan migrate:rollback --step=3
pour plus de détails sur la migration voir
Migrez les tables une par une.
Modifiez le numéro de lot de la migration que vous souhaitez restaurer au maximum.
Exécutez migrate: rollback.
Peut-être pas la manière la plus confortable de traiter des projets plus importants.
Si vous souhaitez modifier le fichier de migration d'origine et le migrer à nouveau, vous pouvez utiliser ce package pour migrer. (Applicable à Laravel 5.4 ou ultérieur)
Tout d’abord, installez le paquet dans votre projet Laravel:
composer require caloskao/migrate-specific
Enregistrer la commande sur app/Console/Kernel.php
:
protected $commands = [
\CalosKao\MigrateSpecific::class
];
Maintenant, lancez cette commande pour migrer votre fichier
php artisan migrate:specific database/migrations/table.php
INSERT INTO Homestead.bb_migrations (`migration`, `batch`) VALUES ('2016_01_21_064436_create_victory_point_balance_table', '2')
quelque chose comme ça
1.) Dans la base de données, accédez à la table des migrations et supprimez l'entrée de la migration liée à la table que vous souhaitez supprimer.
Exemple d'image de table de migration
2.) Ensuite, supprimez la table liée à la migration que vous venez de supprimer de l'instruction 1.
Exemple de suppression d'image de table
3.) Enfin, apportez les modifications souhaitées au fichier de migration de la table que vous avez supprimée de l'instruction no. 2 puis exécutez php artisan migrate
pour migrer à nouveau la table.
Comme indiqué dans le manuel Laravel _ , vous pouvez annuler un nombre spécifique de migrations à l'aide de l'option --step
.
php artisan migrate:rollback --step=5
Le meilleur moyen est de créer une nouvelle migration et d'y apporter les modifications requises.
Solution de contournement dans le pire des cas (if vous avez accès à la base de données plus vous êtes d'accord pour une réinitialisation des données de cette table):
your-specific-migration
your-specific-migration
php artisan migrate --path=/database/migrations/your-specific-migration.php
Ceci forcera laravel à exécuter cette migration spécifique car aucune entrée à ce sujet n'existe dans l'historique de migration de Laravel.