J'ai le fichier de migration suivant db\migrate\20100905201547_create_blocks.rb
Comment annuler spécifiquement ce fichier de migration?
ruby-on-rails
schema
database-schema
rollback
Un apprenti
la source
la source
Class.down
stackoverflow.com/questions/753919/run-a-single-migration-fileRéponses:
Est un moyen de le faire, si la migration que vous souhaitez annuler est la dernière appliquée. Vous pouvez remplacer 1 par le nombre de migrations que vous souhaitez revenir en arrière.
Par exemple:
Annulera également toutes les migrations qui se sont produites plus tard (4, 3, 2 et également 1).
Pour restaurer toutes les migrations vers (et y compris) une migration cible, utilisez: (Cette commande corrigée a été ajoutée APRÈS tous les commentaires signalant l'erreur dans le message d'origine)
Afin d'annuler UNE SEULE migration spécifique (HORS COMMANDE), utilisez:
Notez que cela n'annulera PAS les migrations intercédantes - uniquement celle répertoriée. Si ce n'est pas ce que vous vouliez, vous pouvez exécuter en toute sécurité
rake db:migrate
et il ne réexécutera que celui-ci, en ignorant tous les autres qui n'ont pas été annulés auparavant.Et si jamais vous souhaitez migrer une seule migration dans le désordre, il y a aussi son inverse
db:migrate:up
:la source
STEP=-1
. Je l'ai fait une fois et c'est devenu fou, tout a reculé. Pas gentil! C'était Rails 4.2 - je suppose qu'il peut être corrigé maintenant.restaurera le fichier spécifique.
Pour trouver la version de toutes les migrations, vous pouvez utiliser cette commande:
Ou, le préfixe du nom de fichier de la migration est simplement la version dont vous avez besoin pour restaurer.
Voir l'entrée de guide Ruby on Rails sur les migrations.
la source
Pour annuler la dernière migration, vous pouvez effectuer:
Si vous souhaitez annuler une migration spécifique avec une version, vous devez:
Par exemple, si la version est 20141201122027, vous ferez:
pour annuler cette migration spécifique.
la source
Vous pouvez annuler votre migration en utilisant
rake db:rollback
différentes options. La syntaxe sera différente selon vos besoins.Si vous souhaitez annuler uniquement la dernière migration, vous pouvez utiliser soit
ou
Si vous souhaitez restaurer le nombre de migrations à la fois, vous passez simplement un argument:
où
n
est le nombre de migrations à annuler, à compter de la dernière migration.Si vous souhaitez revenir à une migration spécifique, vous devez transmettre la version de la migration comme suit:
où xxxxx est le numéro de version de la migration.
la source
rake db:migrate:down VERSION=your_migrations's_version_number_here
La version est le préfixe numérique du nom de fichier de la migration
Comment trouver la version :
Vos fichiers de migration sont stockés dans votre
rails_root/db/migrate
répertoire. Recherchez le fichier approprié dans lequel vous souhaitez annuler et copiez le numéro de préfixe.par exemple
nom de fichier:
20140208031131_create_roles.rb
alors la version est20140208031131
la source
rake db:migrate:status
Annulation de la dernière migration:
Annulation du dernier
n
nombre de migrationsAnnulation d'une migration spécifique
la source
Pour annuler la dernière migration, vous pouvez effectuer:
Si vous souhaitez annuler une migration spécifique avec une version, vous devez:
Si le fichier de migration que vous souhaitez annuler a été appelé
db/migrate/20141201122027_create_some_table.rb
, alors la VERSION de cette migration est20141201122027
, qui est l'horodatage du moment où cette migration a été créée, et la commande pour annuler cette migration serait:la source
S'il s'agit d'une migration réversible et de la dernière qui a été exécutée, exécutez-la
rake db:rollback
. Et vous pouvez toujours utiliser la version. par exemplele fichier de migration est 20140716084539_create_customer_stats.rb, donc la commande de restauration sera,
rake db:migrate:down VERSION=20140716084539
la source
Pour restaurer toutes les migrations jusqu'à une version particulière (par exemple
20181002222222
), utilisez:(Notez que cela utilise
db:migrate
- pasdb:migrate:down
comme dans les autres réponses à cette question.)En supposant que la version de migration spécifiée est plus ancienne que la version actuelle, cela annulera toutes les migrations jusqu'à, mais sans inclure, la version spécifiée.
Par exemple, si
rake db:migrate:status
s'affiche initialement:Fonctionnement:
Aura pour résultat:
Référence: https://makandracards.com/makandra/845-migrate-or-revert-only-some-migrations
la source
Du guide Rails
Annulation des migrations précédentes
Vous pouvez utiliser la capacité d'Active Record pour annuler les migrations à l'aide de la
revert
méthode:La
revert
méthode accepte également un bloc d'instructions à inverser. Cela peut être utile pour rétablir certaines parties des migrations précédentes. Par exemple, imaginons que CreateBlock est validé et il est décidé ultérieurement qu'il serait préférable d'utiliser les validations Active Record, au lieu de la contrainte CHECK, pour vérifier le code postal.La même migration aurait également pu être écrite sans utiliser Revert, mais cela aurait impliqué quelques étapes supplémentaires: inverser l'ordre de create_table et réversible, remplacer create_table par drop_table et enfin remplacer up par down et vice-versa. Tout cela est pris en charge par Revert.
la source
Les migrations modifient l'état de la base de données à l'aide de la commande
Nous pouvons annuler une seule étape de migration en utilisant
Pour remonter au début, nous pouvons utiliser
Comme vous pouvez le deviner, la substitution de tout autre numéro à 0 migre vers ce numéro de version, où les numéros de version proviennent de la liste séquentielle des migrations
la source
Eh bien dans les rails 5, il est assez facile de ratisser db: migrate: status ou rails db: migrate: status
Il a été modifié pour gérer les deux de la même manière. Ensuite, choisissez simplement la version que vous souhaitez restaurer, puis exécutez rake db: migrate VERSION = 2013424230423
Assurez-vous que VERSION est entièrement en majuscules
Si vous avez un problème avec une étape de la migration ou bloqué au milieu, allez simplement dans le fichier de migration et commentez les lignes qui ont déjà été migrées.
J'espère que cela pourra aider
la source
Si vous souhaitez annuler et migrer, vous pouvez exécuter:
C'est la même chose que:
la source