205 votes

Comment exécuter une migration spécifique dans Laravel

Je crée une migration de table d'adresses mais une migration est déjà présente dans la base de données, cela donne l'erreur suivante :

La table de base ou la vue existe déjà : 1050 La table 'notification' existe déjà

Donc, puis-je exécuter une migration spécifique ? Comment puis-je exécuter dans Laravel ?

1 votes

Dans votre cas, je supprimerais le schéma/la base de données et je la recréerais à nouveau.

4 votes

Est-ce qu'un modérateur pourrait s'il vous plaît supprimer l'avertissement de doublon? Une réponse pour Laravel 4.x est bien trop obsolète pour considérer cette question comme étant répondue. @communauté

1 votes

Exactement - Je voulais poster une réponse, mais elle est spécifique à Laravel 5, alors que la question "doublon" indique explicitement Laravel 4.

490voto

Ravi Thummar Points 1071

En résumé;

"Par le livre":

Si des tables ont déjà été migrées et qu'il y a des données stockées dans ces tables, soyez prudent avec php artisan migrate:refresh. Vous perdrez toutes vos données!

Pour cette question spécifique, l'OP a déjà exécuté la migration et conformément au livre, s'il veut exécuter à nouveau la même migration, alors d'abord il devrait faire un rollback avec php artisan migrate:rollback. Cela annulera la ou les dernières migrations.

Ensuite, vous pouvez exécuter php artisan migrate et toutes les migrations NON migrées seront migrées.


Si vous avez créé plus de migrations et qu'elles ne sont pas encore migrées, pour exécuter seulement une migration spécifique utilisez ceci :

php artisan migrate --path=/database/migrations/nom_complet_du_fichier_migration.php

Et parfois, s'il y a un problème et que vous obtenez des erreurs lors de la migration, disant que la table existe déjà, vous pouvez supprimer manuellement cette entrée spécifique dans migrations ET la table qui pose problème dans votre base de données et exécuter php artisan:migrate pour recréer la table.

5 votes

Ajoutez l'extension .php dans chemin comme php artisan migrate --path=/database/migrations/my_migrations.php

34 votes

Affiché Rien à migrer. pour moi. Pourquoi? La migration doit-elle déjà être sur les tables de migrations? J'ai essayé avec une migration déjà présente aussi et cela a donné la même chose. Ce chemin est-il mon chemin complet vers le fichier ou est-il relatif à la racine de mon app? Édition : j'ai également essayé avec le chemin complet et cela dit la même chose.

8 votes

Spécifier --path=chemin/vers/migration_spécifique n'a pas fonctionné pour moi, j'ai dû adopter l'autre stratégie de déplacer les fichiers spécifiques dans un sous-dossier, puis exécuter --path=chemin/vers/sous-dossier, c'est une grande lacune. Attention cependant : migrate:reset ignorera --path !

-1voto

Sachin Aghera Points 352

Oui, vous pouvez l'ajouter en suivant ces étapes simples.

Étape 1 : Ouvrez votre base de données.

Étape 2 : Trouvez la table de migration.

Étape 3 : Trouvez le nom du fichier de migration.

Étape 4 : Supprimez ce fichier.

Étape 5 : Vous pouvez maintenant exécuter php artisan migrate.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X