Skip to main content

Troubleshoot Database

Check scope, identity, schema, and query shape in that order. This sequence isolates most Database issues quickly.

Start with five checks​

  1. Confirm the site hostname.
  2. Confirm the app slug and logical table name.
  3. Confirm the request uses one current credential.
  4. Confirm is_materialized is true for the table.
  5. Confirm the payload fields and value types match the stored schema.

For list requests, begin with page=1, a small page_size, and stable ordering.

Match the symptom​

SymptomCheckNext action
401 UnauthorizedCredential type, value, and expirySend one supported credential or obtain a fresh one
403 ForbiddenCaller role, app, table, action, and row scopeTest the same operation with the intended policy and caller
404 Not FoundSite URL, app slug, table name, and record IDConfirm each path segment with the same caller
Table not materializedTable metadata and provisioning statusConfirm provisioning completed and is_materialized is true
400 Bad Request on a writeBody shape, required fields, value types, and constraintsRetry with the smallest record that satisfies the schema
limit/offset pagination is not supportedPagination parametersUse page and page_size
Empty listApp/table scope, caller policy, and filtersRemove filters one at a time while preserving caller and scope
More rows than expectedFilter field, operator, value encoding, and combined filtersRebuild the query from one exact-match filter and verify each addition
Unexpected orderordering field names and direction prefixesAdd a stable tie-breaker such as id; use -field for descending
Create or update conflictPrimary key, unique values, and foreign keysGenerate a new key or update the intended existing record
Delete conflictReferencing table and foreign-key actionRemove or reassign dependent records before retrying
504 Gateway TimeoutPage size, filters, relationship depth, and aggregation workReduce one dimension and retry the read
5xx responseRequest identifier, timestamp, and operationRead the target state before retrying a write

Reduce a list query​

Use a fixed caller, site, app, and table while changing one query dimension at a time:

  1. Request fields=id&page=1&page_size=1.
  2. Add one exact-match root-table filter.
  3. Add stable ordering.
  4. Increase page_size.
  5. Add one additional filter or a separately authorized related-table query.
  6. Add grouping or aggregation last.

For ordinary record-list requests, compare data and total after each step; total is the number of matching records before the page is sliced. Grouped aggregate reads return a summary result set, and their total represents the number of returned group rows. See Aggregate records for the separate aggregate response contract.

Check a record write​

For create and update requests:

  1. Open Definition in TaruviBase Console and inspect the stored schema.
  2. Confirm field names, types, required fields, and constraints.
  3. Confirm the primary-key fields and types used by the table.
  4. For a new single-key table, omit id to use TaruviBase's generated UUID or supply a valid UUID when the application owns the identity.
  5. Remove fields that are not declared in the schema.
  6. Create one synthetic record before sending a batch.
  7. Read the record back and compare the stored values.

A single create returns the new record at data[0]. A single update returns the record directly in data. See Requests, responses, and errors for every response shape.

Check SDK behavior​

  • Confirm the installed SDK version matches the version declared on the page.
  • JavaScript uses from(), pageSize(), and groupBy().
  • Python uses from_(), page_size(), and group_by().
  • Finish a query-builder operation with execute() unless the example uses first() or count().
  • Refine Database examples use the read path: getList, getOne, and getMany through the corresponding useList, useOne, and useMany hooks.
  • Compare an SDK request with the corresponding REST example when isolating route or query-parameter behavior.

Prepare a support request​

Include:

  • HTTP status, error code, and redacted message;
  • UTC timestamp;
  • site hostname, app slug, and logical table name;
  • HTTP method and route;
  • SDK or provider name and version; and
  • a minimal synthetic payload or query.

Keep the support bundle safe by redacting API keys, tokens, cookies, personal data, and raw customer records.

For query syntax, continue with Filter, sort, and paginate records.