Terapkan dan verifikasi perubahan skema di Fabric Apps

Terapkan perubahan entitas Rayfin ke database menggunakan rayfin up atau rayfin up db apply, dan verifikasi bahwa skema telah mencapai server.

Mengedit kelas di rayfin/data/ tidak mengubah database yang sudah terpasang dengan sendirinya. Rayfin membaca entitas Anda dan menghasilkan konfigurasi Data API Builder (DAB) hanya ketika Anda secara eksplisit menerapkan perubahan tersebut.

Penggunaan rayfin up untuk pembaruan aplikasi

Jalankan npx rayfin up kapan pun Anda ingin menerapkan perubahan entitas terbaru ke aplikasi Fabric:

npx rayfin up

Perintah ini:

  • Menyinkronkan pengaturan runtime.
  • Menerapkan skema basis data yang dihasilkan dari dekorator di rayfin/data/.
  • Membangun dan mendistribusikan konten statis saat staticHosting diaktifkan.

Jalankan perintah setelah setiap perubahan pada file di rayfin/data/. Setelah deployment pertama, eksekusi berikutnya memperbarui deployment yang sama alih-alih membuat deployment baru.

Hanya terapkan perubahan skema basis data

Gunakan npx rayfin up db apply saat Anda ingin menerapkan skema database tanpa menyinkronkan pengaturan runtime atau mendistribusikan konten statis:

npx rayfin up db apply

Subperintah lanjutan ini berguna saat Anda menjalankan frontend dengan npm run dev, backend sudah di-deploy, dan Anda ingin melakukan iterasi skema secara terpisah.

Jika perubahan dapat menyebabkan kehilangan data, seperti kehilangan kolom, atau mengganti nama tabel, CLI akan memblokir operasi tersebut dan menjelaskan potensi dampaknya. Setelah Anda meninjau operasi dan menerima kehilangan data, terapkan perubahan dengan --force:

npx rayfin up db apply --force

Caution

Opsi ini --force dapat menyebabkan kehilangan data permanen. Gunakan hanya setelah Anda meninjau setiap operasi yang dilaporkan oleh CLI.

Verifikasi skema yang telah didistribusikan

Warning

Perintah rayfin up atau rayfin up db apply yang berhasil dijalankan tidak menjamin bahwa frontend Anda dapat langsung mengkueri entitas baru atau yang telah diubah. Verifikasi bahwa penerapan dalam kondisi sehat sebelum Anda menguji entitas tersebut.

Setelah setiap perubahan pada rayfin/data/, periksa penerapan:

npx rayfin up status

Jika entitas baru atau yang diubah masih mengembalikan kesalahan GraphQL setelah deployment menjadi sehat, terapkan skema secara eksplisit, lalu uji kembali entitas tersebut:

npx rayfin up db apply

Tambahkan --force hanya jika CLI melaporkan perubahan yang berpotensi merusak dan Anda menerima kehilangan data tersebut.

Untuk status deployment yang dapat dibaca mesin, gunakan output JSON:

npx rayfin up status --json

Anda dapat menggunakan respons JSON dalam skrip yang menunggu penerapan yang sehat sebelum melakukan pemeriksaan lebih lanjut.

Ikuti alur kerja skema yang khas

# 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

Jika langkah 4 melaporkan operasi yang berpotensi merusak, tinjau sebelum menjalankan ulang perintah dengan --force.

Pemecahan masalah perubahan skema

GraphQL mengembalikan kesalahan server internal

Periksa setiap @text() kolom pada entitas yang terdampak untuk nilai yang hilang max . Dengan Microsoft SQL Server, @text() tanpa max menghasilkan kolom NVARCHAR(MAX), yang dapat mencegah pembuatan skema GraphQL.

Tambahkan panjang maksimum eksplisit, lalu terapkan skema:

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

Tinjau operasi yang dilaporkan sebelum menggunakan --force.

CLI melaporkan perubahan yang berpotensi merusak

Tinjau operasi yang tercantum, termasuk kolom yang dihapus, tipe yang dipersempit, dan tabel yang diganti namanya. Jalankan kembali perintah dengan --force saja hanya setelah Anda memastikan bahwa hilangnya data dapat diterima.

Penerapan skema gagal

Jalankan npx rayfin up status, dan tunggu hingga layanan berstatus sehat sebelum mencoba lagi penerapan skema.

Layanan data ini tidak memiliki dialek

Kapan services.data.enabled adalah true, konfigurasikan dialect: mssql di rayfin/rayfin.yml.

services:
  data:
    enabled: true
    dialect: mssql

Gunakan prompt AI

Salin prompt berikut ke GitHub Copilot atau agen pengkodean lain yang memiliki akses ke proyek dan terminal Anda:

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