103 votes

Exécution d'une migration Laravel spécifique (fichier unique)

J'ai 5 migrations dans mon projet. Je veux seulement exécuter l'une de ces migrations. Est-il possible de transmettre le nom d'un seul fichier à la commande php artisan migrate ?

64voto

fico7489 Points 2389

Vous pouvez mettre des migrations dans plus de dossiers et exécuter quelque chose comme :

php artisan migrate --path=/app/database/migrations/my_migrations

58voto

Antonio Carlos Ribeiro Points 30208

Il semble que vous le faites mal.

Les migrations ont été conçues pour être exécutées par Laravel une par une, dans l'ordre exact dans lequel elles ont été créées, afin qu'il puisse suivre l'exécution et l'ordre d'exécution. De cette manière, Laravel sera en mesure de REVENIR SÛREMENT sur un lot de migrations, sans risquer de casser votre base de données.

Donner à l'utilisateur le pouvoir de les exécuter manuellement rend impossible de savoir (avec certitude) comment annuler les modifications dans votre base de données.

Si vous avez vraiment besoin d'exécuter quelque chose dans votre base de données, vous feriez mieux de créer un script DDL et de l'exécuter manuellement sur votre serveur web.

Ou créez simplement une nouvelle migration et exécutez-la en utilisant artisan.

ÉDIT :

Si vous devez l'exécuter en premier, vous devez d'abord le créer.

Si vous avez juste besoin de les réorganiser, renommez le fichier pour qu'il soit le premier. Les migrations sont créées avec un timestamp :

2013_01_20_221554_table

Pour créer une nouvelle migration avant celui-ci, vous pouvez la nommer

2013_01_19_221554_myFirstMigration

43voto

Pradyumna Challa Points 1150

Déplacez simplement les migrations déjà exécutées hors du dossier app/config/database/migrations/. Ensuite, exécutez la commande php artisan migrate. Ça a bien fonctionné pour moi.

27voto

ErikTheDeveloper Points 267

Un petit extrait sympa pour dissiper d'éventuelles craintes lors de l'exécution des migrations Laravel 4 php artisan migrate --pretend. Cela ne fera que afficher le SQL qui aurait été exécuté si vous aviez lancé la migration réelle.

Il semble que vos premières 4 migrations ont déjà été exécutées. Je suppose que lorsque vous exécutez php artisan migrate, seules les nouvelles migrations récentes seront exécutées.

Petit conseil : assurez-vous que toutes vos méthodes up() et down() fonctionnent comme vous vous y attendez. J'ai l'habitude de faire up(), down(), up() lorsque j'exécute mes migrations, juste pour les tester. Il serait horrible que vous vous retrouviez avec 5-6 migrations et que vous vous rendiez compte que vous ne pouvez pas les annuler sans difficulté, car vous n'avez pas mis à jour le down() en accord avec le up() à 100%.

Juste mon avis ! J'espère que l'option --pretend vous aide.

18voto

elfif Points 1579

La seule façon de relancer une migration est une méthode non recommandée. Vous devez ouvrir votre base de données et supprimer la ligne dans la table de migrations qui représente votre migration.

Ensuite, exécutez à nouveau 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