Migrationen
Das Schema weiterentwickeln
Migrationen ist eine kostenlose Learn Rust Coding-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Learn Rust Coding-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Learn Rust Coding-Kurs umfasst insgesamt 4 Lektionen.
Warum Migrationen?
Eine Migration ist eine versionierte Änderung an Ihrem Datenbankschema, beispielsweise das Hinzufügen einer Tabelle oder Spalte. Migrationen ermöglichen eine sichere und reproduzierbare Weiterentwicklung des Schemas.
- In der Versionsverwaltung erfasst
- Der Reihe nach genau einmal angewendet
Das sqlx-cli-Tool
sqlx stellt eine CLI zur Verwaltung von Migrationen bereit. Installieren Sie sie einmalig mit cargo.
cargo install sqlx-cli --no-default-features --features postgresEine Migration erstellen
sqlx migrate add erstellt eine mit einem Zeitstempel versehene SQL-Datei im Ordner migrations/. Der Zeitstempel bestimmt die Reihenfolge.
sqlx migrate add create_usersSQL für eine Migration schreiben
Jede Migrationsdatei enthält das SQL, das das Schema weiterentwickelt. Beschränken Sie jede Datei auf eine logische Änderung.
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
email TEXT
);Migrationen ausführen
sqlx migrate run wendet alle ausstehenden Migrationen auf DATABASE_URL an und verzeichnet jede davon in einer Tracking-Tabelle.
sqlx migrate runDie Tracking-Tabelle
sqlx erfasst angewendete Migrationen in _sqlx_migrations und speichert die Version sowie eine Prüfsumme, damit eine Migration weder erneut angewendet noch stillschweigend geändert wird.
Umkehrbare Migrationen
Fügen Sie das Flag -r hinzu, um separate Up- und Down-Dateien zu erstellen und Migrationen zurücksetzen zu können. sqlx migrate revert führt die zuletzt erstellte Down-Datei aus.
sqlx migrate add -r create_postsMigrations-Tracking modellieren
Ein Migrations-Runner wendet nur Versionen an, die neuer als die zuletzt angewendete sind. Dieses ausführbare Beispiel modelliert diese Entscheidung.
fn pending(all: &[u32], applied: u32) -> Vec<u32> {
all.iter().cloned().filter(|v| *v > applied).collect()
}
fn main() {
let migrations = [1, 2, 3, 4];
let last_applied = 2;
println!("{:?}", pending(&migrations, last_applied));
}Migrationen in die Binärdatei einbetten
Das Makro migrate! bettet den Migrationsordner in Ihre Binärdatei ein, sodass die Anwendung die Migrationen beim Start ausführen kann und in der Produktion keine CLI benötigt.
use sqlx::{Pool, Postgres};
async fn migrate(pool: &Pool<Postgres>) {
sqlx::migrate!("./migrations")
.run(pool)
.await
.unwrap();
}Prüfsummen und Unveränderlichkeit
Bearbeiten Sie niemals eine bereits ausgeführte Migration. sqlx speichert eine Prüfsumme und verweigert die Fortsetzung, wenn sich der Inhalt einer früheren Migration geändert hat. Fügen Sie stattdessen eine neue Migration hinzu.
Idempotentes SQL
Sichern Sie Anweisungen mit IF NOT EXISTS ab, damit eine erneute Ausführung in einer neuen Umgebung sicher und vorhersehbar ist.
CREATE TABLE IF NOT EXISTS tags (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL UNIQUE
);Kurzer Test
Testen Sie Ihr Verständnis von Migrationen.
Zusammenfassung
Sie haben Schema-Migrationen kennengelernt:
- Migrationen sind geordnete, versionierte Änderungen am Schema
sqlx migrate add/run/revertverwaltet sie- Angewendete Versionen und Prüfsummen befinden sich in
_sqlx_migrations migrate!bettet sie zur Ausführung beim Start ein- Bearbeiten Sie niemals eine angewendete Migration, sondern fügen Sie eine neue hinzu
Damit ist der sqlx-Kurs abgeschlossen.
Häufig gestellte Fragen
Ist die Lektion „Migrationen“ kostenlos?
Ja — der vollständige Text von „Migrationen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Learn Rust Coding-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Learn Rust Coding-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Migrationen“?
Das Schema weiterentwickeln Du übst Learn Rust Coding mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Learn Rust Coding zu starten?
Keine Vorkenntnisse erforderlich. Learn Rust Coding auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Migrationen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Learn Rust Coding-Lektion Code schreiben und ausführen?
Ja. Jede Learn Rust Coding-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.