Debug D1
D1 allows you to capture exceptions and log errors returned when querying a database. To debug D1, you will use the same tools available when debugging Workers.
The D1 Workers Binding API returns detailed error messages within an Error
object.
To ensure you are capturing the full error message, log or return e.message
as follows:
The stmt.
and db.
methods throw an Error object ↗ whenever an error occurs.
To capture exceptions, log the Error.message
value. For example, the code below has a query with an invalid keyword - INSERTZ
instead of INSERT
:
The code above throws the following error message:
D1 returns the following error constants, in addition to the extended (detailed) error message:
Message | Cause |
---|---|
D1_ERROR | Generic error. |
D1_TYPE_ERROR | Returned when there is a mismatch in the type between a column and a value. A common cause is supplying an undefined variable (unsupported) instead of null . |
D1_COLUMN_NOTFOUND | Column not found. |
D1_DUMP_ERROR | Database dump error. |
D1_EXEC_ERROR | Exec error in line x: y error. |
View a stream of live logs from your Worker by using wrangler tail
or via the Cloudflare dashboard.
- To report bugs or request features, go to the Cloudflare Community Forums ↗.
- To give feedback, go to the D1 Discord channel ↗.
- If you are having issues with Wrangler, report issues in the Wrangler GitHub repository ↗.
You should include as much of the following in any bug report:
- The ID of your database. Use
wrangler d1 list
to match a database name to its ID. - The query (or queries) you ran when you encountered an issue. Ensure you redact any personally identifying information (PII).
- The Worker code that makes the query, including any calls to
bind()
using the Workers Binding API. - The full error text, including the content of
error.cause.message
.
- Learn how to debug Workers.
- Understand how to access logs generated from your Worker and D1.
- Use
wrangler dev
to run your Worker and D1 locally and debug issues before deploying.