Tillämpa och verifiera schemaändringar i Fabric Apps

Applicera Rayfin-entitetsändringar på databasen genom att använda rayfin up eller rayfin up db apply, och verifiera att schemat har nått servern.

Att redigera en klass i rayfin/data/ ändrar inte den distribuerade databasen i sig själv. Rayfin läser dina entiteter och genererar Data API Builder (DAB)-konfiguration endast när du uttryckligen tillämpar ändringarna.

Användning rayfin up för applikationsuppdateringar

Kör npx rayfin up när du vill distribuera dina senaste entitetsändringar till en Fabric-app:

npx rayfin up

Det här kommandot:

  • Synkroniserar runtime-inställningar.
  • Tillämpar databasschemat som genereras utifrån dekoratörerna i rayfin/data/.
  • Bygger och distribuerar statiskt innehåll när staticHosting är aktiverat.

Kör kommandot efter varje ändring i en fil i rayfin/data/. Efter den första distributionen uppdaterar efterföljande körningar samma distribution istället för att skapa en ny.

Tillämpa endast databasschemaändringar

Använd npx rayfin up db apply när du vill tillämpa databasschemat utan att synkronisera runtime-inställningar eller distribuera statiskt innehåll:

npx rayfin up db apply

Detta avancerade underkommando är användbart när du kör klientdelen med npm run dev, serverdelen redan är driftsatt och när du vill iterera över schemat oberoende.

Om en ändring kan orsaka dataförlust, som att en kolumn tas bort eller en tabell byts namn, blockerar CLI:n operationen och beskriver den potentiella påverkan. Efter att du har granskat operationerna och accepterat dataförlusten, tillämpa ändringen med --force:

npx rayfin up db apply --force

Caution

Alternativet --force kan orsaka permanent dataförlust. Använd det först efter att du har granskat varje operation som rapporterats av CLI.

Verifiera det distribuerade schemat

Varning

Ett lyckat rayfin up kommando rayfin up db apply garanterar inte att ditt frontend omedelbart kan fråga en ny eller ändrad entitet. Kontrollera att driftsättningen fungerar korrekt innan du testar entiteten.

Efter varje förändring i rayfin/data/, kontrollera installationen:

npx rayfin up status

Om en ny eller ändrad entitet fortfarande returnerar GraphQL-fel efter att distributionen blivit frisk, applicera schemat explicit och testa sedan entiteten igen:

npx rayfin up db apply

Lägg bara till --force om CLI rapporterar en potentiellt destruktiv ändring och du accepterar dataförlust.

För maskinläsbar distributionsstatus, använd JSON-utdata:

npx rayfin up status --json

Du kan använda JSON-svaret i ett skript som väntar på en hälsosam distribution innan du kör vidare kontroller.

Följ ett typiskt schema-arbetsflöde

# 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

Om steg 4 rapporterar en potentiellt destruktiv operation, granska den innan du kör kommandot igen med --force.

Felsök schemaändringar

GraphQL returnerar ett internt serverfel

Kontrollera varje @text() fält på den berörda enheten för ett saknat max värde. Med Microsoft SQL Server genererar @text() utan NVARCHAR(MAX) en max-kolumn, vilket kan förhindra generering av GraphQL-scheman.

Lägg till explicita maximala längder och tillämpa sedan schemat:

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

Gå igenom de rapporterade operationerna innan du använder --force.

CLI rapporterar en potentiellt destruktiv förändring

Gå igenom de listade operationerna, inklusive borttagna kolumner, avsmalnade typer och omdöpta tabeller. Kör kommandot igen --force först efter att du bekräftat att dataförlusten är acceptabel.

Det går inte att tillämpa schemat

Kör npx rayfin up status och vänta tills tjänsterna fungerar korrekt innan du försöker tillämpa schemat igen.

Datatjänsten har ingen dialekt

När services.data.enabled är true, konfigurera dialect: mssql i rayfin/rayfin.yml.

services:
  data:
    enabled: true
    dialect: mssql

Använd en AI-prompt

Kopiera följande prompt till GitHub Copilot eller någon annan kodagent som har tillgång till ditt projekt och din terminal:

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`.