je courais simple rails la migration sur un grand mysql2 db pour ajouter une colonne à une table:migration Rails semble terminée, mais rake montre encore la migration comme étant en attente
class AddMiddleNameToPerson < ActiveRecord::Migration[5.0]
def change
add_column :person, :middle_name, :string
end
end
J'ai été déconnecté du serveur exécutant les rails application pendant la migration. Je puis rebranché et vérifié l'état de la migration avec bundle exec rake db:migrate:status
, qui a montré que vers le bas:
down 20170424182410 Add middle name to person
Je suppose qu'il était encore en cours d'exécution en arrière-plan. Donc je l'ai laissé pendant un certain temps, et éventuellement en utilisant la console rails j'ai vérifié que person.middle_name était accessible sur les objets. Cependant, db:migrate:status
montre encore la migration vers le bas, et si je tente de lancer db:migrate
à nouveau je reçois une erreur:
Mysql2::Error: Duplicate column name 'middle_name'
Il semble donc que la nouvelle colonne est dans la base de données, et accessible par ActiveRecord, mais rake db:migrate:status
découvertes la migration en tant que down
et rake db:migrate
tente de le réexécuter, sans succès.
J'ai fini par faire quelque chose de similaire à cela pour le résoudre. Acceptant. – wildabeast