web-dev-qa-db-fra.com

Supprimer la migration en toute sécurité à Laravel

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
161
Globalz

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:

  1. Supprimez manuellement le fichier de migration sous app/database/migrations/my_migration_file_name.php
  2. Réinitialiser les fichiers à chargement automatique du composeur:composer dump-autoload
  3. Se détendre

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):

  1. Supprimez manuellement le fichier de migration sous app/database/migrations/my_migration_file_name.php
  2. Réinitialiser les fichiers à chargement automatique du composeur:composer dump-autoload
  3. Modifiez votre base de données: Supprimez la dernière entrée de la table migrations
309
malisokan

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.

64
Jason Lewis

Vous devrez probablement également supprimer l'entrée de la table des migrations.

12
Stephane

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.

6
JR Tan
 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).

4
joash

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.

1
Udhav Sarvaiya

Cela fonctionne pour moi:

  1. J'ai supprimé toutes les tables de ma base de données, principalement la table des migrations.
  2. php artisan migrate:refresh

en laravel 5.5.43

0
ederrafo