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:
- CLI
- npx
logto db alteration deploy
npx @logto/cli 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:
- CLI
- npx
logto db alteration deploy 1.2.0
npx @logto/cli 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.
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:
- CLI
- npx
logto db alteration rollback 1.0.0
npx @logto/cli db alteration rollback 1.0.0
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:
- CLI
- npx
logto db alteration deploy next
npx @logto/cli 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.