Führt alembic upgrade head
innerhalb einer Transaktion, so dass alle Datenbankänderungen erfolgreich sind oder fehlschlagen? Wenn nicht, warum wurde es so entworfen?Ausführen von Alembic-Upgrade-Migrationen in einer Transaktion
5
A
Antwort
1
Mein Verständnis ist, alembic läuft innerhalb einer Transaktion für Datenbanken, die es, wie Postgres unterstützen. Wenn Sie auf einer Datenbank sind, die nicht unterstützt dies (Husten MySQL Husten), können Sie diese Funktion nicht nutzen können.
1
, dass etwas Sie im env.py
entscheiden können, was ist, wo Sie das Verhalten der Migrationen anpassen Ihr Setup anpassen. Sie können sehen, wie Ihre Upgrades in einer Transaktion aus der Vorlage geschehen, um sicherzustellen, als Beispiel für generische Datenbanken zur Verfügung gestellt: https://github.com/zzzeek/alembic/blob/eaaafbca88f85f5432e04affe1f94cbf1ad06080/alembic/templates/generic/env.py#L64
def run_migrations_online():
...
with context.begin_transaction():
context.run_migrations()
Verwandte Themen
- 1. Microsoft.Practices.EnterpriseLibrary.Data: Mehrere Anweisungen in einer Transaktion ausführen
- 2. Ausführen von SQL-Server-Transaktion mit Python
- 3. Mehrere Abfragen in einer Transaktion ausführen und Ausgaben separat verarbeiten
- 4. Skript mit Transaktion in Mysql ausführen
- 5. Erstellen Sie eine lokale Transaktion in einer Spring JTA-Transaktion
- 6. indexedDB Erstellen einer Datenbank und Hinzufügen von Inhalten Fehler beim Ausführen von "Transaktion" in "IDBDatabase"
- 7. Mehrere Abfragen als eine dblink-Transaktion ausführen
- 8. Ausführen Firebase-Transaktion innerhalb ArrayAdapter und getView
- 9. zwei Verfahren in einer Transaktion
- 10. Commit einer Transaktion von einer PostgreSQL-Funktion in Kolben
- 11. Informationen von PayPal nach einer Transaktion erhalten
- 12. SharePoint 2007: Wie kann ich eine Reihe von Operationen innerhalb einer Transaktion ausführen?
- 13. Verteilte Transaktion abgeschlossen. Entweder registrieren Sie diese Sitzung in einer neuen Transaktion oder die NULL-Transaktion
- 14. Transaktion Rollback in einer reaktiven Anwendung
- 15. Mehrere NHibernate-Sitzungen in einer Transaktion
- 16. Wiederherstellen von Datenbankzeilen aus einer nicht festgeschriebenen Transaktion
- 17. Kombinieren von JPA- und JDBC-Aktionen in einer Transaktion
- 18. Abschneiden gefolgt von Einfügen in einer Transaktion MySQL
- 19. Verwenden von SqlBulkCopy in einer Transaktion für mehrere, verknüpfte Tabellen
- 20. Rollback einer Transaktion in einem Grails-Dienst
- 21. Zahlungs- und Fakturierungsplan in einer Transaktion
- 22. mehrere mysql-Anweisungen in einer Transaktion C#
- 23. Zurücksetzen einer Transaktion in Entity Framework
- 24. Wie kann ich eine Datenbankoperation außerhalb einer Transaktion in Rails/ActiveRecord ausführen
- 25. Rollback-Transaktion von Trigger
- 26. kann keine Liste in einer Feder-Daten-Redis-Transaktion abfragen
- 27. Ausführen von Makro in nur einer Arbeitsmappe
- 28. Ausführen von Java-Code in einer Textdatei
- 29. Oracle DDL in autonome Transaktion
- 30. Unittests von einer Eingabeaufforderung ausführen
Warum wird es nicht in der Transaktion in MySQL –
MySQL DDL-Befehlen wie 'ALTE/run CREATE/DROP TABLE' automatisch alle laufenden Transaktionen, so ist es in der Regel "sicherer" (zumindest vorhersehbarer) Transaktionen überhaupt nicht zu verwenden. Mit anderen Worten, Schemaänderungen sind in Transaktionen nicht enthalten. –