Files
2026-03-17 16:53:22 -07:00

3.8 KiB

Gotchas

See README.md, configuration.md, api.md, patterns.md.

Common Errors

"Too many open connections" / "Connection limit exceeded"

Cause: Workers have a hard limit of 6 concurrent connections per invocation
Solution: Set max: 5 in driver config, reuse connections, ensure proper cleanup with client.end() or ctx.waitUntil(conn.end())

"Failed to acquire a connection (Pool exhausted)"

Cause: All connections in pool are in use, often due to long-running transactions
Solution: Reduce transaction duration, avoid queries >60s, don't hold connections during external calls, or upgrade to paid plan for more connections

"connection_refused"

Cause: Database refusing connections due to firewall, connection limits, or service down
Solution: Check firewall allows Cloudflare IPs, verify DB listening on port, confirm service running, and validate credentials

"Query timeout (deadline exceeded)"

Cause: Query execution exceeding 60s timeout limit
Solution: Optimize with indexes, reduce dataset with LIMIT, break into smaller queries, or use async processing

"password authentication failed"

Cause: Invalid credentials in Hyperdrive configuration
Solution: Check username and password in Hyperdrive config match database credentials

"SSL/TLS connection error"

Cause: SSL/TLS configuration mismatch between Hyperdrive and database
Solution: Add sslmode=require (Postgres) or sslMode=REQUIRED (MySQL), upload CA cert if self-signed, verify DB has SSL enabled, and check cert expiry

"Queries not being cached"

Cause: Query is mutating (INSERT/UPDATE/DELETE), contains volatile functions (NOW(), RANDOM()), or caching disabled
Solution: Verify query is non-mutating SELECT, avoid volatile functions, confirm caching enabled, use wrangler dev --remote to test, and set prepare=true for postgres.js

"Slow multi-query Workers despite Hyperdrive"

Cause: Worker executing at edge, each query round-trips to DB region
Solution: Enable Smart Placement ("placement": {"mode": "smart"} in wrangler.jsonc) to execute Worker near DB. See patterns.md Multi-Query pattern.

"Local database connection failed"

Cause: localConnectionString incorrect or database not running
Solution: Verify localConnectionString correct, check DB running, confirm env var name matches binding, and test with psql/mysql client

"Environment variable not working"

Cause: Environment variable format incorrect or not exported
Solution: Use format CLOUDFLARE_HYPERDRIVE_LOCAL_CONNECTION_STRING_<BINDING>, ensure binding matches wrangler.jsonc, export variable in shell, and restart wrangler dev

Limits

Limit Free Paid Notes
Max configs 10 25 Hyperdrive configurations per account
Worker connections 6 6 Max concurrent connections per Worker invocation
Username/DB name 63 bytes 63 bytes Maximum length
Connection timeout 15s 15s Time to establish connection
Idle timeout 10 min 10 min Connection idle timeout
Max origin connections ~20 ~100 Connections to origin database
Query duration max 60s 60s Queries >60s terminated
Cached response max 50 MB 50 MB Responses >50MB returned but not cached

Resources