mastra-ai/mastra · error · Error

Database provisioning failed${db.error ? `: ${db.error}` : '

Error message

Database provisioning failed${db.error ? `: ${db.error}` : ' (no error detail from provider)'}

What it means

pollDatabaseUntilReady polls the platform database resource after a create request until status becomes 'ready'. If the provider reports status 'failed', provisioning is terminal and the CLI throws immediately, appending db.error when the provider supplied a reason, or a generic note when it did not. This is the CLI surfacing an asynchronous server-side provisioning failure rather than a client bug.

Source

Thrown at packages/cli/src/commands/db/platform-api.ts:210

  const maxWaitMs = opts?.maxWaitMs ?? 5 * 60 * 1000;
  const intervalMs = opts?.intervalMs ?? 3000;
  const start = Date.now();
  let lastStatus: DatabaseStatus | '' = '';

  while (true) {
    const db = await withPollingRetries(() => fetchDatabase(token, orgId, projectId, dbId));

    if (db.status !== lastStatus) {
      lastStatus = db.status;
      opts?.onStatus?.(db.status);
    }

    if (db.status === 'ready') {
      return db;
    }

    if (db.status === 'failed') {
      throw new Error(`Database provisioning failed${db.error ? `: ${db.error}` : ' (no error detail from provider)'}`);
    }

    if (db.status === 'deleting' || db.status === 'deleted') {
      throw new Error(
        `Database was ${db.status === 'deleted' ? 'deleted' : 'scheduled for deletion'} while provisioning`,
      );
    }

    if (Date.now() - start >= maxWaitMs) {
      throw new Error(
        `Timed out waiting for database to become ready (last status: ${db.status}). ` +
          `Check again with: mastra env db show ${dbId}`,
      );
    }

    await new Promise(resolve => setTimeout(resolve, intervalMs));
  }
}

View on GitHub (pinned to 75dd419e61)

Solutions

  1. Read the appended db.error detail and fix the underlying provider issue (quota, region, size)
  2. Retry `mastra env db create` once the provider issue is resolved
  3. Try a different region or instance size if the error indicates capacity or unsupported configuration
  4. Contact support / check provider status page if db.error was absent (no detail from provider)

Example fix

// before
await createDatabase({ region: 'us-east-x', size: 'huge' }); // status failed: unsupported region
// after
await createDatabase({ region: 'us-east-1', size: 'standard' }); // supported config
Defensive patterns

Strategy: try-catch

Validate before calling

// Validate region/size against supported values before creating:
const SUPPORTED_REGIONS = ['us-east-1','eu-west-1'];
if (!SUPPORTED_REGIONS.includes(opts.region)) throw new Error('Unsupported region: ' + opts.region);

Type guard

function isProvisioningFailed(db: { status: string; error?: string }): db is { status: 'failed'; error?: string } {
  return db.status === 'failed';
}

Try / catch

try {
  const db = await createDatabase(opts);
} catch (err) {
  const msg = err instanceof Error ? err.message : String(err);
  if (msg.startsWith('Database provisioning failed')) {
    console.error('Provider said:', msg.replace('Database provisioning failed', '').trim() || '(no detail)');
  } else throw err;
}

Prevention

When it happens

Trigger: createDatabase -> pollDatabaseUntilReady observes db.status === 'failed' on a poll iteration; db.error may carry the provider's detail or be absent.

Common situations: Cloud provider quota/region capacity limits, invalid database size/tier combination, unsupported region, or an internal provider error during first-time provisioning.

Related errors


AI-assisted analysis of mastra-ai/mastra@75dd419e61 (2026-08-30). Data as JSON: /api/errors/1289010ad30eacba. Report an issue: GitHub.