デバッグ 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からのライブログのストリームを表示します。
- バグを報告したり機能をリクエストするには、Cloudflare Community Forums ↗にアクセスしてください。
- フィードバックを提供するには、D1 Discordチャンネル ↗にアクセスしてください。
- Wranglerに問題がある場合は、Wrangler GitHubリポジトリ ↗で問題を報告してください。
バグ報告には、以下の情報をできるだけ多く含めるべきです:
- データベースのID。
wrangler d1 listを使用して、データベース名とそのIDを一致させます。 - 問題が発生したときに実行したクエリ(またはクエリ)。個人を特定できる情報(PII)は必ず削除してください。
- クエリを実行するWorkerコード、クライアントAPIを使用した
bind()への呼び出しを含む。 - 完全なエラーテキスト、
error.cause.messageの内容を含む。
- Workersのデバッグ方法を学びます。
- WorkerとD1から生成されたログにアクセスする方法を理解します。
wrangler devを使用して、ローカルでWorkerとD1を実行し、デプロイ前に問題をデバッグします。