Cloudflare D1のデータベースを誤って削除してしまいましたか? APIを使った復元に使える期間は、削除時点から7日間です。この変更は2026年10月23日に公開され、削除から7日を超えたデータベースへのリクエストはエラーになります。緊急時にはデータベースIDを確認し、できるだけ早くundeleteリクエストを送信してください。

変更点
復元メソッドでは、アカウントIDと削除済みデータベースのUUIDを指定します。リクエスト本文で新しい名前を渡すこともできます。デフォルトでは、データベースは以前の名前で復元されます。同じアカウント内の別のデータベースがその名前をすでに使用している場合は、復元時にnew_nameを指定する必要があります。これらの条件はD1 undelete APIリファレンスに記載されています。
期間は7日、つまり7 × 24時間です。そのため、暦日だけでは不十分です。削除時刻を記録し、リクエストを送信する時刻と比較してください。期限が迫っている場合は、まず復元リクエストを送り、その後に名前とデータを確認します。
手順
- 削除済みデータベースを特定する。ログ、インフラストラクチャのコード、またはインシデント情報から、account IDとdatabase IDを確認します。APIパスではデータベースのUUIDを使うため、表示名だけではリクエストできません。
- 期間を確認する。削除から7日未満であることを確認します。Cloudflareは、誤削除に気づいたらすぐにリクエストを送信するよう推奨しています。
- 名前の競合を解消する。以前の名前がすでに使われている場合は、
new_nameで未使用の値を指定します。そうでなければ、名前を変更する必要はありません。 - 文書化されたメソッドを呼び出す。APIでは
POST /accounts/{account_id}/d1/database/{database_id}/undeleteを使います。必要な権限を持つAPIトークンでリクエストを認証し、シークレットをログに記録しないでください。 - 結果を確認する。成功レスポンスを受け取ったら、データベースが期待する名前でアカウントに表示されることを確認し、アプリケーションが正しいインスタンスに接続していることを確かめます。
UndeleteとTime Travelは異なる目的に使う
Undeleteは削除済みデータベースを復元します。Time Travelは、時刻またはbookmarkを指定して、既存のデータベースの状態を復元します。Cloudflareのドキュメントによると、直近30日分の履歴が利用できますが、実際の期間はプランによって異なります。undelete後は、Time Travelで復元前の時点や時刻に戻すことはできません。稼働中のデータベースでデータに問題が起きた場合はTime Travelを、削除されたオブジェクトには期限内のundeleteを使用してください。
運用手順に7日間の期限を確認する項目を追加し、データベースIDと削除時刻をインシデントログに保存してください。これにより、正しいリクエストをすばやく送信でき、IDの検索や名前の競合の確認に時間を取られずに済みます。