Geçişler
Şemayı geliştirin
Geçişler, CoddyKit'te ücretsiz bir Learn Rust Coding dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Learn Rust Coding öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Learn Rust Coding kursu toplamda 4 dersten oluşur.
Geçişler neden gerekli?
Geçiş, tablo veya sütun eklemek gibi veritabanı şemanızda sürümlendirilmiş bir değişikliktir. Şemanızın güvenli ve tekrarlanabilir biçimde gelişmesini sağlar.
- Sürüm denetiminde izlenir
- Sırayla ve tam olarak bir kez uygulanır
sqlx-cli aracı
sqlx, geçişleri yönetmek için bir CLI sunar. Bunu cargo ile bir kez yükleyin.
cargo install sqlx-cli --no-default-features --features postgresGeçiş oluşturma
sqlx migrate add, migrations/ klasöründe zaman damgalı bir SQL dosyası oluşturur. Sıralamayı zaman damgası belirler.
sqlx migrate add create_usersGeçiş SQL'i yazma
Her geçiş dosyası, şemayı ileri taşımak için gereken SQL'i içerir. Her dosyada tek bir mantıksal değişiklik bulundurun.
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
email TEXT
);Geçişleri çalıştırma
sqlx migrate run, DATABASE_URL üzerinde bekleyen tüm geçişleri uygular ve her birini bir izleme tablosuna kaydeder.
sqlx migrate runİzleme tablosu
sqlx, uygulanan geçişleri _sqlx_migrations içinde kaydeder; sürümü ve sağlama toplamını saklayarak bir geçişi yeniden uygulamasını veya sessizce değiştirmesini önler.
Geri alınabilir geçişler
Ayrı yukarı ve aşağı dosyaları oluşturmak ve geri alabilmek için -r bayrağını ekleyin. sqlx migrate revert en son aşağı dosyasını çalıştırır.
sqlx migrate add -r create_postsGeçiş izlemeyi modelleme
Bir geçiş çalıştırıcısı yalnızca son uygulanan sürümden daha yeni sürümleri uygular. Bu çalıştırılabilir örnek, bu kararı modeller.
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));
}Geçişleri ikili dosyaya gömme
migrate! makrosu geçiş klasörünü ikili dosyanıza gömer; böylece uygulama bunları başlangıçta uygulayabilir ve üretimde CLI gerekmez.
use sqlx::{Pool, Postgres};
async fn migrate(pool: &Pool<Postgres>) {
sqlx::migrate!("./migrations")
.run(pool)
.await
.unwrap();
}Sağlama toplamları ve değişmezlik
Daha önce çalıştırılmış bir geçişi asla düzenlemeyin. sqlx bir sağlama toplamı saklar ve geçmişteki bir geçişin içeriği değişirse devam etmeyi reddeder. Bunun yerine yeni bir geçiş ekleyin.
İdempotent SQL
Yeni bir ortamda yeniden çalıştırmayı güvenli ve öngörülebilir kılmak için ifadeleri IF NOT EXISTS ile koruyun.
CREATE TABLE IF NOT EXISTS tags (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL UNIQUE
);Hızlı Kontrol
Geçişleri anlayıp anlamadığınızı test edin.
Özet
Şema geçişlerini öğrendiniz:
- Geçişler sıralı ve sürümlendirilmiş şema değişiklikleridir
sqlx migrate add/run/revertbunları yönetir- Uygulanan sürümler ve sağlama toplamları
_sqlx_migrationsiçinde bulunur migrate!bunları başlangıçta uygulamak üzere gömer- Uygulanmış bir geçişi asla düzenlemeyin; yenisini ekleyin
sqlx kursu burada tamamlanıyor.
Sıkça Sorulan Sorular
“Geçişler” dersi ücretsiz mi?
Evet — “Geçişler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Learn Rust Coding kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Learn Rust Coding kursu toplamda 4 dersten oluşur.
“Geçişler” dersinde ne öğreneceğim?
Şemayı geliştirin Learn Rust Coding ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Learn Rust Coding öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Learn Rust Coding, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Geçişler” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Learn Rust Coding dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Learn Rust Coding dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.