Sémamódosítások alkalmazása és ellenőrzése a Fabric-alkalmazásokban

Alkalmazza a Rayfin entitás módosításait az adatbázisra a rayfin up db apply vagy a rayfin up használatával, és ellenőrizze, hogy a séma eljutott-e a kiszolgálóra.

Egy osztály szerkesztése rayfin/data/ önmagában nem változtatja meg a telepített adatbázist. A Rayfin csak akkor olvassa el az entitásokat, és generálja a Data API Builder (DAB) konfigurációt, ha kifejezetten alkalmazod a változtatásokat.

Alkalmazás frissítésekhez való felhasználás rayfin up

Futtasd npx rayfin up akkor is, amikor a legutóbbi entitásváltozásokat szeretnéd telepíteni egy Fabric alkalmazásba:

npx rayfin up

Ez a parancs:

  • Szinkronizálja a futási idejű beállításokat.
  • Alkalmazza a(z) rayfin/data/ dekorátoraiból generált adatbázissémát.
  • Statikus tartalmat épít és telepít, ha staticHosting engedélyezve.

A parancsot minden fájl módosítása után futtatd .rayfin/data/ Az első telepítés után a következő futtatások ugyanazt a telepítést frissítik, nem pedig újat hoznának létre.

Csak adatbázis-séma változtatások alkalmazása

Használd, npx rayfin up db apply amikor az adatbázis sémát szeretnéd alkalmazni futási beállítások szinkronizálása vagy statikus tartalom telepítése nélkül:

npx rayfin up db apply

Ez a fejlett alparancs hasznos, amikor a frontendet futtatod npm run dev, a backend már telepítve van, és önállóan szeretnéd iterálni a sémát.

Ha egy változás adatvesztést okozhat, például egy oszlop elhagyását vagy egy tábla átnevezését, a CLI blokkolja a műveletet és leírja a lehetséges hatást. Miután átnézted a műveleteket és elfogadtad az adatvesztést, alkalmazd a módosítást a következőkkel:--force

npx rayfin up db apply --force

Caution

Ez az --force opció tartós adatvesztést okozhat. Csak akkor használd, ha átnézted az összes CLI által jelentett műveletet.

Ellenőrizd a telepített sémát

Warning

Egy sikeres rayfin up vagy rayfin up db apply parancs nem garantálja, hogy a frontend azonnal le tud kérdezni egy új vagy megváltozott entitást. Ellenőrizd, hogy a telepítés egészséges-e, mielőtt tesztelnéd az entitást.

A(z) rayfin/data/ bármilyen módosítása után ellenőrizd a telepítést:

npx rayfin up status

Ha egy új vagy módosított entitás még mindig GraphQL hibákat ad a telepítés egészségessé válása után, alkalmazzuk a sémát explicitíven, majd teszteljük újra az entitást:

npx rayfin up db apply

Csak akkor add hozzá a --force-t, ha a CLI potenciálisan destruktív változást jelez, és elfogadod az adatvesztést.

A gépi olvasható telepítési státuszhoz JSON kimenetet használjunk:

npx rayfin up status --json

A JSON választ használhatod egy olyan szkriptben, amely egészséges telepítésre vár, mielőtt további ellenőrzéseket végezne.

Kövesd a tipikus séma munkafolyamatot

# 1. Edit an entity, such as rayfin/data/Todo.ts.
# 2. Apply the application changes.
npx rayfin up

# 3. Verify that the deployment is healthy.
npx rayfin up status

# 4. If the changed entity still fails, apply the schema explicitly.
npx rayfin up db apply

Ha a 4. lépés potenciálisan romboló műveletet jelent, nézze át, mielőtt újra futtatja a parancsot .--force

Hibakeresés séma változásai

A GraphQL belső szerver hibát ad

Ellenőrizd az érintett entitás minden @text() mezőjét, hogy hiányzó max érték van-e. A Microsoft SQL Server esetében a NVARCHAR(MAX) nélküli max egy @text() oszlopot hoz létre, ami megakadályozhatja a GraphQL-séma generálását.

Add hozzá az explicit maximális hosszokat, majd alkalmazzuk a sémát:

@text({ max: 200 })
title!: string;
npx rayfin up db apply --force

Nézze át a jelentett műveleteket, mielőtt használnád --force.

A CLI egy potenciálisan romboló változásról számol be

Tekintse át a felsorolt műveleteket, beleértve az elhagyott oszlopokat, a szűkített típusokat és az átnevezett táblákat. Csak akkor futtasd újra a parancsot --force , ha megerősítetted, hogy az adatvesztés elfogadott.

A séma alkalmazása meghibásodik

Futtasd a(z) npx rayfin up status parancsot, és várd meg, amíg a szolgáltatások egészséges állapotba kerülnek, mielőtt újra megpróbálod alkalmazni a sémát.

Az adatszolgáltatásnak nincs dialektusa

Amikor a(z) services.data.enabled értéke true, konfigurálja a(z) dialect: mssql elemet a(z) rayfin/rayfin.yml részben.

services:
  data:
    enabled: true
    dialect: mssql

Használj egy AI promptot

Másold be a következő promptot a GitHub Copilot-ba vagy egy másik kódoló ügynökbe, amely hozzáfér a projektedhez és terminálodhoz:

I just added a new field to an entity in my Rayfin project's rayfin/data/ folder. Run
`npx rayfin up` to apply the change, then run `npx rayfin up status` to confirm the
deployment is healthy. If querying the changed entity still fails after that, run
`npx rayfin up db apply` and check again. Review any potentially destructive operations with me before using `--force`.