SigNoz/signoz · error · error
no operations table supplied
Error message
no operations table supplied
What it means
ErrNoOperationsTable is a sentinel error from the ClickHouse reader: the query service was constructed without an operations table name, so operation-based queries cannot run.
Source
Thrown at pkg/query-service/app/clickhouseReader/reader.go:118
signozTSTableNameV41Week = "distributed_time_series_v4_1week"
signozTSTableNameV4Reduced = "distributed_time_series_v4_reduced"
signozTableAttributesMetadata = "distributed_attributes_metadata"
signozLocalTableAttributesMetadata = "attributes_metadata"
signozUpdatedMetricsMetadataLocalTable = "updated_metadata"
signozUpdatedMetricsMetadataTable = "distributed_updated_metadata"
minTimespanForProgressiveSearch = time.Hour
minTimespanForProgressiveSearchMargin = time.Minute
maxProgressiveSteps = 4
charset = "abcdefghijklmnopqrstuvwxyz" +
"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
NANOSECOND = 1000000000
)
var (
ErrNoOperationsTable = errors.New("no operations table supplied")
ErrNoIndexTable = errors.New("no index table supplied")
ErrStartTimeRequired = errors.New("start time is required for search queries")
seededRand *rand.Rand = rand.New(
rand.NewSource(time.Now().UnixNano()))
)
// SpanWriter for reading spans from ClickHouse
type ClickHouseReader struct {
db clickhouse.Conn
prometheus prometheus.Prometheus
sqlDB sqlstore.SQLStore
TraceDB string
operationsTable string
durationTable string
indexTable string
errorTable string
usageExplorerTable string
SpansTable stringView on GitHub (pinned to 5069bf80b0)
Solutions
- Set the operations table name in the query-service ClickHouse reader configuration
- Verify the ClickHouse schema migration that creates the operations table has run
- Pass a non-empty operationsTable argument when constructing the reader
Example fix
// before reader := clickhouseReader.NewClickHouseReader(conn, "", indexTable) // after reader := clickhouseReader.NewClickHouseReader(conn, "signouts_operations", indexTable)
Defensive patterns
Strategy: validation
Validate before calling
if operationsTable == "" {
log.Fatal("operations table must be configured (e.g. via env/config)")
}
reader := NewClickHouseReader(conn, operationsTable, indexTable) Try / catch
if err := reader.SomeOperationQuery(ctx, params); errors.Is(err, clickhouseReader.ErrNoOperationsTable) {
// fix config and restart rather than retrying
} Prevention
- Add a config sanity check at service boot
- Run ClickHouse schema migrations before deploying query-service
When it happens
Trigger: Instantating/calling ClickHouseReader methods that need the operations table when the operationsTable config/arg is empty (e.g. GetOperations-style queries with no table configured).
Common situations: Missing operations table setting in query-service config/env; a ClickHouse schema version that doesn't create the operations table; fresh installs skipping the migration step.
Understand the failure class
Background: "environment variable is not set" and "Missing keys in environment" errors: what missing required env var messages mean and how to fix them — this error's family across 28 libraries.
Related errors
- no index table supplied
- removing a selected field is not allowed, please reach out t
- ErrorNotFound
- error while fetching trace schema: %s
- CodeLicenseUnavailable
AI-assisted analysis of SigNoz/signoz@5069bf80b0 (2026-08-28).
Data as JSON: /api/errors/dab74a4082448f48.
Report an issue: GitHub.