Zum Hauptinhalt springen

Datenbankänderung

Beim Entwickeln neuer Funktionen oder beim Refaktorisieren bestehender Funktionen ist es manchmal unvermeidlich, Datenbankschemata zu ändern.

Das kann beängstigend klingen, denn als Benutzer musst du normalerweise:

  • Den Unterschied zwischen zwei oder mehr Versionen genau überprüfen
  • Die Datenbank auf eine sichere und rückwärtskompatible Weise ändern
  • Auf potenzielle Fehler vorbereitet sein, z. B. ein Rollback-Skript haben
  • Laufende Logto-Instanzen schrittweise auf die neue Version umstellen

Hey, wir sind auch Entwickler und wissen, dass es unangenehm ist, all diese riskanten, aber notwendigen Dinge zu tun. Warum überlassen wir sie nicht jemandem, der keine Fehler macht, wie einem CLI?

Ab jetzt wird dein Upgrade-Prozess so aussehen:

  • Führe logto db alt deploy von überall aus, wo du auf die Datenbank zugreifen kannst
  • Laufende Logto-Instanzen schrittweise auf die neue Version umstellen

Lass uns anfangen!

Bestimme die zu bereitstellende Version

Wenn du Logto CLI global installiert hast, wird dringend empfohlen, das CLI vor der Bereitstellung auf die neueste Version zu aktualisieren, um alle verfügbaren Datenbankänderungen zu erhalten. Führe dann den Befehl aus:

logto db alteration deploy

Wenn deine Datenbank auf dem neuesten Stand ist, siehst du die folgende Nachricht:

[info] Found 0 alteration to deploy

Wenn du nicht bereitgestellte Änderungen hast, wird dich das CLI bitten, die gewünschte Version auszuwählen:

? Choose the alteration target version (Use arrow keys)
> 1.2.0
1.0.0

Theoretisch sollte die zu bereitstellende Version mit der Version deiner Logto-Instanz übereinstimmen. In der Zwischenzeit kannst du den Befehl mit einer Zielversion verwenden:

logto db alteration deploy 1.2.0

Dies ist hilfreich, wenn du die Änderung in einer nicht-TTY-Pipeline durchführen möchtest. Denke daran, die Datenbank-URL mit --db-url zu übergeben. Siehe Bereitstellung und Konfiguration für die Einrichtung eines Änderungsjobs in deinem Cluster.

hinweis

Für jedes Änderungsskript wird das Logto CLI das gesamte Skript in einer Transaktion ausführen. Wenn eine Bereitstellung fehlschlägt, kannst du nach Behebung des Problems einfach mit demselben Befehl fortfahren.

Änderungen zurücksetzen

Unsere Änderungsskripte enthalten auch ein down-Skript, das die Änderungen zurücksetzen kann. Um den Datenbankstatus auf eine bestimmte Version zurückzusetzen, ersetze 1.0.0 durch deine Zielversion und führe den folgenden Befehl aus:

logto db alteration rollback 1.0.0
hinweis

Du findest alle Änderungsskripte in diesem Verzeichnis.

Für Mitwirkende

Der Master-Branch des Logto-Repositories kann unveröffentlichte Änderungsskripte enthalten. Möglicherweise musst du "next"-Änderungen manuell bereitstellen, indem du folgendes ausführst:

logto db alteration deploy next

Wenn du eine Funktion entwickelst, die Datenbankänderungen erfordert, musst du anstelle der Aktualisierung des Datenbankschemas auch ein Skript im folgenden Format bereitstellen:

next-[timestamp]-what-to-do.ts

Siehe dieses Verzeichnis als Referenz.