rake db:migrate ne détecte pas de nouvelles de la migration?
Expérimentés avec des Rails /ActiveRecord 2.1.1
- Vous créer une première version avec (par exemple) ruby script\générer échafaudage titre du produit:chaîne de caractères de la description:texte image_url:string
- Ce créer (par exemple) un fichier de migration appelé 20080910122415_create_products.rb
- Vous appliquez la migration avec la rake db:migrate
- Maintenant, vous ajoutez un champ à la table produit avec ruby script\générer la migration add_price_to_product prix:décimal
- Cela créer un fichier de migration appelé 20080910125745_add_price_to_product.rb
- Si vous essayez d'exécuter rake db:migrate, il va revenir de la première migration, de ne pas appliquer la prochaine! Afin que votre produit table de la destruction de!
- Mais si vous avez exécuté râteau seul, il aurait dit qu'une migration est en attente
Pls noter que l'application de rake db:migrate (une fois que le tableau a été détruit) s'appliquera à toutes les migrations dans l'ordre.
La seule solution que j'ai trouvé est de spécifier la version de la nouvelle migration comme dans:
rake db:migrate version=20080910125745
Alors je me demandais: est-ce prévu un nouveau comportement?
OriginalL'auteur Rollo Tomazzi | 2008-09-16
Vous devez vous connecter pour publier un commentaire.
Vous devriez être en mesure d'utiliser
pour le forcer à aller de l'avant, mais alors vous risquez de rater entrelacés les migrations en provenance de d'autres personnes dans votre équipe
si vous exécutez
deux fois, il va réappliquer toutes les migrations.
Je rencontre le même problème sur windows avec SQLite, il peut-être un bug spécifique à un tel environnement.
Modifier - j'ai trouvé pourquoi. Dans le railstie base de données.tâche rake que vous avez le code suivant :
Puis dans mes variables d'environnement, j'ai
en Ruby
ainsi, la tâche rake appels
et dans ActiveRecord::Migration, nous avons :
Oui,
rake db:migrate VERSION=0
est la version longue pourrake db:migrate:down
Modifier - je aller à la mise à jour de la phare de bug, mais j'ai la super compagnie de proxy interdit que je connecte il y
En attendant, vous pouvez essayer de désactiver la Version avant d'appeler migrer ...
OriginalL'auteur Jean
Je suis en désaccord Tom! cette est un bug !! V3.5.0 f n'est pas une version valide de râteau migrations. Râteau ne doit pas l'utiliser pour migrer:vers le bas juste parce que ruby a choisi de considérer que la "V3.5.0 f".to_i est de 0 ...
Râteau doit bruyamment se plaignent que la VERSION n'est pas valide afin que les utilisateurs savent ce qui est en haut
(entre vous et moi, en vérifiant que la version est une AAAAMMJJ formaté timestamp par la conversion à l'entier est un peu léger)
[Sacrément IE6 qui ne me permet pas de commenter ! et non, je ne peux pas changer de navigateur grâce de l'entreprise]
OriginalL'auteur Jean
Ce n'est pas le comportement attendu. J'allais suggérer reporting cela comme un bug sur le phare, mais je vois que vous avez déjà fait! Si vous fournir quelques informations supplémentaires (y compris OS/base de données/version de ruby) je vais prendre un coup d'oeil.
OriginalL'auteur tomafro
Jean,
Merci beaucoup pour votre enquête. Vous avez raison, et en fait, je pense que vous avez découvert plus grave bug, des espèces de conception "bug'.
Ce qui se passe est que le râteau de saisir n'importe quelle valeur que vous passez à la ligne de commande, et de les stocker dans des variables d'environnement. Le râteau tâches qui seront par la suite appelés va juste tirer les valeurs de la variable d'environnement.
Lors de la db:migrate requêtes ENV ['VERSION'], il demande en fait la version de paramètres que vous définissez à l'appel de la commission. Lorsque vous appelez rake db:migrate, vous ne passez pas n'importe quelle version.
Mais nous avons une variable d'environnement appelée VERSION qui a été défini pour d'autres fins par un autre programme (je n'ai pas encore lequel). Et le gars derrière râteau (ou derrière la base de données.rake) n'ont pas compris ce qui allait se passer. C'est un bug de conception. Au moins, ils auraient pu utiliser plus de noms de variables spécifiques comme "RAKE_VERSION" ou "RAKE_PARAM_VERSION" au lieu de "VERSION".
Tom, je vais certainement pas à proximité, mais modifier mon rapport de bug sur phare pour tenir compte de ces nouvelles découvertes.
Et encore merci Jean pour votre aide. J'ai posté ce bug sur le phare comme 5 jours agao et encore obtenu aucune réponse!
Rollo
OriginalL'auteur Rollo Tomazzi