Heroku run rake db: migrer les résultats sans modification de la base de données, application redémarrée plusieurs fois
J'ai un problème avec les poussant mon migrations vers la base de données de production.
La question:
- J'ai modifié schéma de base de données en ajoutant 1 colonne.
- J'ai migré vers la base de données de production:
MacBook-Air-Mac:app msc$ rake db:migrate RAILS_ENV="production"
[RailsAdmin] RailsAdmin initialisation désactivé par défaut. Passer SKIP_RAILS_ADMIN_INITIALIZER=false si vous en avez besoin.
== AddLengthColumnToBooks: migration =========================================
-- add_column(:des livres, des :longueur :entier)
-> 0.0017 s
== AddLengthColumnToBooks: migrés (0.0019 s) ================================ - Penser que la nouvelle DB schéma est en cours de production, j'ai déployé le code qui ne fait certaines choses avec
:length
. - Dans la production, j'ai eu l'erreur suivante:
undefined method `longueur=' #
- Je n'ai
heroku rollback
et déclassé à l'application de la dernière version fiable. - ALORS (un peu trop tard sans doute), j'ai découvert que je
heroku restart
l'application pour charger les nouveaux indices. Je l'ai fait plusieurs fois. - J'ai ouvert la console et puis vérifié
Book.column_names
mais il n'y avait paslength
- Je n'ai
heroku run rake db:migrate
suivie parheroku restart
une fois de plus, pas de changement. - J'ai essayé de la migration d'une autre colonne de la base de données de production, mais n'obtenez pas de message, pas même celui de p.2.
Ce que je fais mal?
Mise à jour
Sur la base des réponses de Philipej'ai fait un certain nombre de mesures supplémentaires:
git add db/schema.rb
git add db/migrate/20130325103953_add_length_column_to_books.rb
et " git add db/migrate/20130401041910_add_duration_column_to_books.rb'. Git a répondu:
- Les modifications soient validées:
(utilisez "git reset HEAD ..." à unstage)nouveau fichier: db/migrate/20130325103953_add_length_column_to_books.rb
nouveau fichier: db/migrate/20130401041910_add_duration_column_to_books.rb
modifié: db/schema.rb - Alors je n'ai
git commit -m "Updating the schema"
. - De nouveau la sortie a été:
3 files changed, 168 insertions(+), 156 deletions(-)
create mode 100644 db/migrate/20130325103953_add_length_column_to_books.rb
create mode 100644 db/migrate/20130401041910_add_duration_column_to_books.rb - Puis-je exécuter
heroku run rake db:migrate
. Malheureusement, il n'y a aucun signe des migrations, tout simplement eu:De course
rake db:migrate
attaché à la borne..., exécuter.5428
et c'est tout. - Dans la production de la Console Rails, l'exécution de
Book.column_names
lui manque encore une fois de la longueur et de la durée.
Maintenant je suis encore plus d'idées.
`
source d'informationauteur rhjs
Vous devez vous connecter pour publier un commentaire.
Il ne ressemble pas à vous pousser des changements d'Heroku. Des mesures devraient être comme suit;
git add .
git commit -m "Adding features"
git push heroku master
- en supposant que vous utilisezheroku
comme votre nom à distance et que vous travaillez dans lemaster
brancheheroku run rake db:migrate
de lancer les migrations SUR HEROKUheroku restart
Que tout ce qu'il faut pour que vous travaillez.
J'ai eu le même problème; j'ai git ajouté les migrations, git les ont poussés vers le serveur, casquette déployés, et la base de données n'a pas changé. Enregistré dans le serveur directement, couru rake db:migrate, et la ligne de commande semblait courir la migration, mais rien n'a changé.
Dans mon cas, en quelque sorte rake db:migrate a été l'utilisation de la mauvaise RAILS_ENV. Je me suis connecté au serveur, et a couru
rake db:migrate RAILS_ENV=production
Cela a provoqué la base de données pour créer les nouvelles colonnes, et puis tout le code que j'ai eu de débogage dans la base de données de test a commencé à travailler sur le serveur.
J'ai juste eu le même problème. Après l'ajout d'une colonne à ma DB en local, je n'ai
heroku run rake db:migrate -app [my app name]
. L'exécution de mon code sur la production, j'ai euActiveRecord::UnknownAttributeError (unknown attribute '_____' for [table name].)
Cela a résolu mon problème:
heroku restart --app [my app name]
Mes deux cents, d'après mon expérience: j'ai pensé que
heroku run db:migrate
également migré db contenu en production. Non! Seule structure. Donc dans mon cas, le journal n'a pas de travail dans la production, car il n'y avait pas les utilisateurs. J'ai eu à signer utilisateur de test de nouveau, et puis il a travaillé. Espérons qu'il aidera les novices comme moi il y