getredash/redash · error · Exception
Failed loading results for query id {}.
Error message
Failed loading results for query id {}. What it means
Raised by get_query_results (redash/query_runner/query_results.py:80) when the non-cached path executes the query via query.data_source.query_runner.run_query and that runner returns a non-None error. It is a wrapper: the real cause is whatever made the underlying data source execution fail (SQL syntax, credentials, timeouts, network).
Source
Thrown at redash/query_runner/query_results.py:80
query_text = query_text.replace("{{{{{my_key}}}}}".format(my_key=key), value[0])
return query_text
def get_query_results(user, query_id, bring_from_cache, params=None):
query = _load_query(user, query_id)
if bring_from_cache:
if query.latest_query_data_id is not None:
results = query.latest_query_data.data
else:
raise Exception("No cached result available for query {}.".format(query.id))
else:
query_text = query.query_text
if params is not None:
query_text = replace_query_parameters(query_text, params)
results, error = query.data_source.query_runner.run_query(query_text, user)
if error:
raise Exception("Failed loading results for query id {}.".format(query.id))
return results
def create_tables_from_query_ids(user, connection, query_ids, query_params, cached_query_ids=[]):
for query_id in set(cached_query_ids):
results = get_query_results(user, query_id, True)
table_name = "cached_query_{query_id}".format(query_id=query_id)
create_table(connection, table_name, results)
for query in set(query_params):
results = get_query_results(user, query[0], False, query[1])
table_hash = hashlib.md5(
"query_{query}_{hash}".format(query=query[0], hash=query[1]).encode(), usedforsecurity=False
).hexdigest()
table_name = "query_{query_id}_{param_hash}".format(query_id=query[0], param_hash=table_hash)
create_table(connection, table_name, results)
View on GitHub (pinned to ca79fe988d)
Solutions
- Open and execute the source query directly in Redash to see the underlying data source error
- Fix that root cause (SQL, credentials, connectivity, timeout settings) — this exception carries no extra detail
- If the source query is slow, raise its timeout or pre-schedule it and use bring_from_cache=True
Example fix
# before
results = get_query_results(user, qid, bring_from_cache=False)
# after
try:
results = get_query_results(user, qid, bring_from_cache=False)
except Exception as e:
logger.error('query %s failed: %s', qid, e)
results = get_query_results(user, qid, bring_from_cache=True) # fall back to last good result Defensive patterns
Strategy: fallback
Validate before calling
results, err = query.data_source.query_runner.run_query(query_text, user)
if err:
logger.warning('source query %s failed: %s', query_id, err)
# decide before calling get_query_results whether to proceed Try / catch
try:
results = get_query_results(user, qid, False)
except Exception as e:
logger.error('loader failed for query %s: %s', qid, e)
results = get_query_results(user, qid, True) # serve last good cached result Prevention
- Monitor the source query with an alert so failures surface before loaders break
- Debug by running the source query directly to get the real error text
- Wrap loader calls and fall back to cached results for read-only dashboards
When it happens
Trigger: Calling get_query_results with bring_from_cache=False where the source query fails at the data source: bad SQL, expired credentials, unreachable database, query timeout, or unsupported syntax.
Common situations: A results-loader Python query referencing a source query whose SQL recently broke after a schema change; data source password rotation; the source query runs fine interactively but the loader runs it as a different user hitting row-level restrictions.
Related errors
- Invalid JWT token
- Error during query execution. Reason: {error}
- Failed running query [%s].
- Username and Password required
- SSH tunneling is not implemented for this query runner yet.
AI-assisted analysis of getredash/redash@ca79fe988d (2026-08-28).
Data as JSON: /api/errors/e8b5839c46f1aedd.
Report an issue: GitHub.