0Pricing
Learn Rust Coding · Pelajaran

Migrasi

Mengembangkan skema

Migrasi adalah pelajaran Learn Rust Coding gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Learn Rust Coding, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Learn Rust Coding mencakup 4 pelajaran total.

Mengapa menggunakan migrasi?

Migrasi adalah perubahan berversi pada skema basis data, seperti menambahkan tabel atau kolom. Migrasi memungkinkan skema berkembang dengan aman dan dapat direproduksi.

  • Dilacak dalam kendali versi
  • Diterapkan secara berurutan, tepat satu kali

Alat sqlx-cli

sqlx menyediakan CLI untuk mengelola migrasi. Instal alat ini sekali dengan cargo.

cargo install sqlx-cli --no-default-features --features postgres

Membuat migrasi

sqlx migrate add membuat file SQL bertanda waktu di folder migrations/. Tanda waktu menentukan urutannya.

sqlx migrate add create_users

Menulis SQL migrasi

Setiap file migrasi berisi SQL untuk memajukan skema. Simpan satu perubahan logis dalam setiap file.

CREATE TABLE users (
    id   SERIAL PRIMARY KEY,
    name TEXT NOT NULL,
    email TEXT
);

Menjalankan migrasi

sqlx migrate run menerapkan semua migrasi yang tertunda terhadap DATABASE_URL, lalu mencatat masing-masing migrasi dalam tabel pelacakan.

sqlx migrate run

Tabel pelacakan

sqlx mencatat migrasi yang telah diterapkan di _sqlx_migrations, dengan menyimpan versi dan checksum agar migrasi tidak pernah diterapkan ulang atau diubah secara diam-diam.

Migrasi yang dapat dibatalkan

Tambahkan tanda -r untuk membuat file naik dan turun yang terpisah sehingga Anda dapat mengembalikan perubahan. sqlx migrate revert menjalankan file turun terbaru.

sqlx migrate add -r create_posts

Memodelkan pelacakan migrasi

Pelaksana migrasi hanya menerapkan versi yang lebih baru daripada versi terakhir yang diterapkan. Contoh yang dapat dijalankan ini memodelkan keputusan tersebut.

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));
}

Menyematkan migrasi ke dalam biner

Makro migrate! menyematkan folder migrasi ke dalam biner sehingga aplikasi dapat menerapkannya saat mulai, tanpa memerlukan CLI di lingkungan produksi.

use sqlx::{Pool, Postgres};

async fn migrate(pool: &Pool<Postgres>) {
    sqlx::migrate!("./migrations")
        .run(pool)
        .await
        .unwrap();
}

Checksum dan ketetapan

Jangan pernah mengedit migrasi yang sudah dijalankan. sqlx menyimpan checksum dan akan menolak melanjutkan jika isi migrasi sebelumnya berubah. Sebagai gantinya, tambahkan migrasi baru.

SQL idempoten

Lindungi pernyataan dengan IF NOT EXISTS agar menjalankannya kembali di lingkungan baru tetap aman dan dapat diprediksi.

CREATE TABLE IF NOT EXISTS tags (
    id   SERIAL PRIMARY KEY,
    name TEXT NOT NULL UNIQUE
);

Pemeriksaan Singkat

Uji pemahaman Anda tentang migrasi.

Rangkuman

Anda telah mempelajari migrasi skema:

  • Migrasi adalah perubahan skema yang berurutan dan berversi
  • sqlx migrate add/run/revert mengelolanya
  • Versi yang diterapkan dan checksum disimpan di _sqlx_migrations
  • migrate! menyematkannya untuk diterapkan saat mulai
  • Jangan pernah mengedit migrasi yang telah diterapkan; tambahkan migrasi baru

Pelajaran sqlx selesai.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Migrasi” gratis?

Ya — teks lengkap “Migrasi” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Learn Rust Coding, upgrade ke CoddyKit PRO. Kursus Learn Rust Coding mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Migrasi”?

Mengembangkan skema Kamu berlatih Learn Rust Coding dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Learn Rust Coding?

Tidak diperlukan pengalaman sebelumnya. Learn Rust Coding di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Migrasi” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Learn Rust Coding ini?

Ya. Setiap pelajaran Learn Rust Coding menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Menghubungkan ke Database
  2. Query yang Diperiksa saat Kompilasi
  3. Operasi CRUD
  4. Migrasi
← Kembali ke Learn Rust Coding