influxdata/influxdb · error · Error

The following Database Table does not exist

Error message

The following Database Table does not exist: {0}

What it means

This error is the `MissingTable(String)` variant of the HTTP server's `Error` enum in influxdb3_server/src/http.rs, rendered as "The following Database Table does not exist: {0}". It is thrown when a request references a table (measurement) that does not exist in the specified database. InfluxDB 3 resolves the table from the query or write target and fails with this error when the catalog has no such table.

Solutions

  1. List tables in the database (`SHOW TABLES` or catalog API) and confirm the exact name
  2. Write an initial data point to create the table before querying it
  3. Fix the table/measurement name in the query or line protocol
  4. Verify you are querying the correct database for this table

Example fix

// before
curl -X POST 'http://localhost:8181/api/v3/query_sql' -d '{"db": "weather", "query": "SELECT * FROM tempatures"}'
// after
curl -X POST 'http://localhost:8181/api/v3/query_sql' -d '{"db": "weather", "query": "SELECT * FROM temperatures"}' // matches SHOW TABLES output
Defensive patterns

Strategy: validation

Validate before calling

// before querying
const tables = await fetch('http://localhost:8181/api/v3/query_sql', {
  method: 'POST',
  body: JSON.stringify({ db: dbName, q: 'SHOW TABLES' })
}).then(r => r.json());
if (!tables.some(t => t.table_name === tableName)) {
  throw new Error(`table ${tableName} missing in ${dbName}`);
}

Type guard

function tableExists(tableName, existingTables) {
  return typeof tableName === 'string' && existingTables.includes(tableName);
}

Try / catch

try {
  return await query(db, sql);
} catch (e) {
  if (e.message.startsWith('The following Database Table does not exist')) {
    // write an initial point to materialize the table, then retry
    await writePoint(db, seedPoint);
    return query(db, sql);
  }
  throw e;
}

Prevention

When it happens

Trigger: Querying (SQL/InfluxQL) or writing to a table/measurement name that has not been created in the given database via the HTTP API.

Common situations: Typo in table/measurement name; querying a table that only exists in another database; version migrations where measurement names changed (1.x measurement naming vs 3.x); data not yet written so the table was never materialized.

Understand the failure class

Background: Record Not Found Errors: "not found", RecordNotFound, and "was not found" — what they mean and how to fix them — this error's family across 28 libraries.

Related errors


AI-assisted analysis of influxdata/influxdb@06200ef96b (2026-09-19). Data as JSON: /api/errors/88805d79cea61cc8. Report an issue: GitHub.

Appendix: source

Thrown at influxdb3_server/src/http.rs:376

    #[error("Plugin error: {0}")]
    Plugin(#[from] influxdb3_processing_engine::plugins::PluginError),

    #[error("Processing engine error: {0}")]
    ProcessingEngine(#[from] influxdb3_processing_engine::manager::ProcessingEngineError),

    #[error(transparent)]
    Influxdb3TypesHttp(#[from] influxdb3_types::http::Error),

    #[error("Authorization error: {0}")]
    ResourceAuthorization(#[from] ResourceAuthorizationError),

    #[error("Authentication error: {0}")]
    Authentication(#[from] AuthenticatorError),

    #[error("The following Database does not exist: {0}")]
    MissingDb(String),

    #[error("The following Database Table does not exist: {0}")]
    MissingTable(String),

    #[error("Cannot parse the given human time: {0}")]
    ParsingHumanTime(#[source] humantime::DurationError),

    #[error("Cannot parse the timestamp: {0}")]
    ParsingTimestamp(#[from] chrono::ParseError),

    #[error("Timestamp is out of range")]
    TimestampOutOfRange,

    #[error("Current node mode does not use the processing engine")]
    NoProcessingEngine,

    #[error("invalid request: {0}")]
    InvalidRequest(String),

    #[error(transparent)]

View on GitHub (pinned to 06200ef96b)