Ich habe gerade ein Problem beim Ausführen einer Produktionsbereitstellung mit capistrano gemeldet. Wir hatten gerade einen großen Refactor fertiggestellt, der viele Datenbankmigrationen enthielt.Verbindung unterbrochen während der Capistrano-Migration
Während der Bereitstellung ist das Schlimmste passiert, und meine SSH-Verbindung ist gesunken, während Cap die Migrationen durchlaufen hat.
Ich denke, es gibt ein Problem mit sshing durch unseren Load Balancer, aber das ist neben dem Punkt.
Ich konnte die Migrationen vollständig ausführen, indem ich den Bildschirm auf dem Server ausführte, migrierte und anschließend implementierte.
Die App ist jetzt auf und scheint gut zu funktionieren, aber ich fragte mich gerade, ob jemand weiß, wie Capistrano Migrationen behandelt, wenn die Verbindung unterbrochen wird?
Kann ich sicher sein, dass die Migration ausgeführt wurde, als die Verbindung unterbrochen wurde?
Wie hoch ist die Wahrscheinlichkeit, dass die Hälfte oder zwei Migrationen zweimal durchgeführt wurden?
Ich würde davon ausgehen, dass Cap jede Migration in einer DB-Transaktion, die Rollback würde, wenn ein Fehler auftrat, würde dies der Fall sein?
Sind Sie sicher, dass die Migrationen vollständig ausgeführt werden? Als ich mich anmeldete und die Migrationen manuell ausführte, starteten sie bei der Migration, die auf die Migration folgte, die ausgeführt wurde, als die Verbindung unterbrochen wurde. Ich verstehe, dass ausgeführten Migrationen nicht wieder ausgeführt werden, weshalb ich fühlte sicher d-migrieren, aber ich weiß nicht, wie zuversichtlich ich bin über die spezifische Migration die Verbindung fiel auf ... – Dalaigh88
Hm, dann wahrscheinlich Du hast Recht, und es hört auf, wenn die Verbindung abbricht, aber was ich mit "Und wenn es angehalten wird ..." gemeint war, war im Grunde genommen, dass sich das Schema für die nicht ausgeführten Migrationen nicht ändert, also wenn du zurückkommst und rufe 'db: migrieren' es wird bei der ersten" un-run "migration nach links gehen und von dort gehen. Ich würde annehmen, dass die Datenbank selbst (abgesehen von Rails, Ruby und Rake) Schutz für Fehler mit "nicht persistenten" Änderungen bietet, entweder für Datensätze selbst (ACID) und für das Schema/die Tabelle. –