コンテンツにスキップ

デバッグ D1

D1を使用すると、データベースをクエリする際に返される例外をキャッチし、エラーをログに記録できます。D1をデバッグするには、Workersのデバッグで利用可能な同じツールを使用します。

エラーの処理

D1のクライアントAPIは、Errorオブジェクト内に詳細なエラーメッセージを返します。

完全なエラーメッセージをキャッチするために、次のようにe.messageをログに記録または返します:

try {
await db.exec("INSERTZ INTO my_table (name, employees) VALUES ()");
} catch (e: any) {
console.error({
message: e.message
});
}
/*
{
"message": "D1_EXEC_ERROR: Error in line 1: INSERTZ INTO my_table (name, employees) VALUES (): sql error: near \"INSERTZ\": syntax error in INSERTZ INTO my_table (name, employees) VALUES () at offset 0"
}
*/

ログの表示

wrangler tailを使用するか、Cloudflareダッシュボードを介して、Workerからのライブログのストリームを表示します。

問題の報告

バグ報告には、以下の情報をできるだけ多く含めるべきです:

  • データベースのID。wrangler d1 listを使用して、データベース名とそのIDを一致させます。
  • 問題が発生したときに実行したクエリ(またはクエリ)。個人を特定できる情報(PII)は必ず削除してください。
  • クエリを実行するWorkerコード、クライアントAPIを使用したbind()への呼び出しを含む。
  • 完全なエラーテキスト、error.cause.messageの内容を含む。

関連リソース