Dans Laravel, il semble exister une commande pour créer une migration, mais pas pour la supprimer.
Créer une commande de migration:
php artisan migrate:make create_users_table
Si je veux supprimer la migration, puis-je simplement supprimer en toute sécurité le fichier de migration correspondant dans le dossier database/migrations?
Fichier de migrations:
2013_05_31_220658_create_users_table
J'ai accidentellement créé une migration avec un mauvais nom (commande: php artisan migrate:make
). Je je n'ai pas exécuté (php artisan migrate
) la migration, alors j'ai décidé de la supprimer . Mes étapes:
app/database/migrations/my_migration_file_name.php
composer dump-autoload
Si vous avez exécuté la migration (php artisan migrate
), procédez comme suit:
a) Run migrate:rollback
- c’est le bon moyen d’annuler la dernière migration (Thnx @Jakobud)
b) Si migrate:rollback
ne fonctionne pas, faites-le manuellement (je me souviens des bugs liés à migrate: restauration dans les versions précédentes):
app/database/migrations/my_migration_file_name.php
composer dump-autoload
Si la migration a été exécutée (lisez: migré), vous devez restaurer votre migration pour effacer l'historique de votre table de base de données. Une fois que vous êtes restauré, vous devriez pouvoir supprimer en toute sécurité votre fichier de migration, puis recommencer la migration.
Vous devrez probablement également supprimer l'entrée de la table des migrations.
J'ai accidentellement créé deux fois create_users_table. Il a remplacé certaines classes et transformé la restauration en ErrorException.
Ce que vous devez faire est de rechercher autoload_classmap.php dans le dossier vendor/composer et de rechercher la ligne de code spécifique telle que
'CreateUsersTable' => $baseDir . '/app/database/migrations/2013_07_04_014051_create_users_table.php',
et modifier le chemin. Ensuite, votre retour en arrière devrait aller.
php artisan migrate:fresh
Devrait faire le travail, si vous êtes en développement et le résultat souhaité est de tout recommencer.
En production, ce n'est peut-être pas ce que vous voulez, alors vous devriez être annoncé. (La commande migrate: fresh supprimera toutes les tables de la base de données, puis exécutera la commande migrate).
Je suis d'accord avec les réponses actuelles, je veux juste ajouter un peu plus d'informations.
Une nouvelle fonctionnalité a été ajoutée àLaravel 5.3 et versions ultérieuresqui vous permettra de sauvegarder une migration unique:
php artisan migrate:rollback --step=1
après, supprimez manuellement le fichier de migration sous database/migrations/my_migration_file_name.php
C'est une fonctionnalité intéressante pour exécuter une migration
De cette manière, vous pouvez supprimer la migration de laravel en toute sécurité uniquement en 2 étapes.
Cela fonctionne pour moi:
php artisan migrate:refresh
en laravel 5.5.43