Fabric Appsでスキーマ変更を適用・検証

rayfin upまたはrayfin up db applyを使ってRayfinエンティティの変更をデータベースに適用し、スキーマがサーバーに到達したか確認します。

rayfin/data/でクラスを編集しても、デプロイされたデータベース自体は変わりません。 Rayfinはあなたのエンティティを読み取り、明示的に変更を適用した場合にのみData API Builder(DAB)の設定を生成します。

アプリケーション更新には rayfin up をご利用ください

最新のエンティティ変更をFabricアプリにデプロイしたいときは、npx rayfin upを実行します:

npx rayfin up

このコマンド:

  • ランタイム設定の同期。
  • rayfin/data/ 内のデコレーターから生成されたデータベース スキーマを適用します。
  • staticHostingが有効になると静的コンテンツを構築・展開します。

rayfin/data/のファイルを変更するたびにコマンドを実行してください。 最初のデプロイの後、その後の実行では新しいデプロイを作成するのではなく、同じデプロイが更新されます。

データベーススキーマの変更のみを適用してください

ランタイム設定の同期や静的コンテンツのデプロイなしにデータベーススキーマを適用したい場合に npx rayfin up db apply を使います。

npx rayfin up db apply

この高度なサブコマンドは、フロントエンドを npm run devで動かし、バックエンドがすでに展開されていて、スキーマを独立して反復したい場合は役立ちます。

カラムの削除やテーブル名の変更など、変更によってデータ損失が生じる場合、CLIはその操作をブロックし、その影響を説明します。 操作を確認しデータ損失を受け入れた後、 --forceで変更を適用します。

npx rayfin up db apply --force

Caution

--forceオプションは永久的なデータ損失を引き起こす可能性があります。 CLIが報告したすべての操作を確認した後にのみ使用してください。

展開されたスキーマを検証してください

Warning

成功した rayfin up や rayfin up db apply コマンドが、フロントエンドが新しいエンティティや変更されたエンティティを即座にクエリできる保証はありません。 エンティティをテストする前に、デプロイが健全かどうかを確認してください。

rayfin/data/の変更があったら、デプロイメントを確認してください:

npx rayfin up status

展開が正常になった後も新規または変更されたエンティティが依然としてGraphQLエラーを返す場合は、スキーマを明示的に適用し、再度エンティティをテストします:

npx rayfin up db apply

--forceは、CLIが破壊的な変更を報告し、データ損失を受け入れた場合のみ追加してください。

機械可読展開状況については、JSON出力をご利用ください:

npx rayfin up status --json

JSONレスポンスを、健全な展開を待ってからさらにチェックするスクリプトで使うことができます。

典型的なスキーマワークフローに従ってください

# 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

ステップ4で破壊的な操作が報告された場合は、コマンドを --forceで再実行する前に確認してください。

スキーマ変更の問題を解決する

GraphQLは内部サーバーエラーを返します

影響を受ける事業体のすべての @text() フィールドに欠落している max 値がないか確認してください。 Microsoft SQL Serverを使うと、maxなしの@text()はNVARCHAR(MAX)列を生成し、GraphQLスキーマの生成を妨げる可能性があります。

明示的な最大長さを加え、スキーマを適用します:

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

--forceを使う前に報告された操作内容を確認してください。

CLIは潜在的に破壊的な変更を報告しています

列の削除、型の狭まり、テーブル名の変更など、リストされた操作を確認しましょう。 データ損失が許容範囲であることを確認した後で --force コマンドを再実行してください。

スキーマの適用は失敗します

npx rayfin up statusを実行し、サービスが正常になるのを待ってからスキーマを適用し直してください。

データサービスには方言がありません

services.data.enabledがtrueされたら、rayfin/rayfin.ymlでdialect: mssqlを設定します。

services:
  data:
    enabled: true
    dialect: mssql

AIプロンプトを使いましょう

以下のプロンプトをGitHub Copilotや、あなたのプロジェクトやターミナルにアクセスできる他のコーディングエージェントにコピーしてください:

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