---
title: Issue Codes
sidebar_position: 5
version: 1
---

# Issue Code Reference

This page lists issue codes that may be displayed in
Superset and provides additional context.

## Issue 1000

```
The datasource is too large to query.
```

It's likely your datasource has grown too large to run the current
query, and is timing out. You can resolve this by reducing the
size of your datasource or by modifying your query to only process a
subset of your data.

## Issue 1001

```
The database is under an unusual load.
```

Your query may have timed out because of unusually high load on the
database engine. You can make your query simpler, or wait until the
database is under less load and try again.

## Issue 1002

```
The database returned an unexpected error.
```

Your query failed because of an error that occurred on the database.
This may be due to a syntax error, a bug in your query, or some other
internal failure within the database. This is usually not an
issue within Superset, but instead a problem with the underlying
database that serves your query.

## Issue 1003

```
There is a syntax error in the SQL query. Perhaps there was a misspelling or a typo.
```

Your query failed because of a syntax error within the underlying query. Please
validate that all columns or tables referenced within the query exist and are spelled
correctly.

## Issue 1004

```
The column was deleted or renamed in the database.
```

Your query failed because it is referencing a column that no longer exists in
the underlying datasource. You should modify the query to reference the
replacement column, or remove this column from your query.

## Issue 1005

```
The table was deleted or renamed in the database.
```

Your query failed because it is referencing a table that no longer exists in
the underlying database. You should modify your query to reference the correct
table.

## Issue 1006

```
One or more parameters specified in the query are missing.
```

Your query was not submitted to the database because it's missing one or more
parameters. You should define all the parameters referenced in the query in a
valid JSON document. Check that the parameters are spelled correctly and that
the document has a valid syntax.

## Issue 1007

```
The hostname provided can't be resolved.
```

The hostname provided when adding a new database is invalid and cannot be
resolved. Please check that there are no typos in the hostname.

## Issue 1008

```
The port is closed.
```

The port provided when adding a new database is not open. Please check that
the port number is correct, and that the database is running and listening on
that port.

## Issue 1009

```
The host might be down, and cannot be reached on the provided port.
```

The host provided when adding a new database doesn't seem to be up.
Additionally, it cannot be reached on the provided port. Please check that
there are no firewall rules preventing access to the host.

## Issue 1010

```
Superset encountered an error while running a command.
```

Something unexpected happened, and Superset encountered an error while
running a command. Please reach out to your administrator.

## Issue 1011

```
Superset encountered an unexpected error.
```

Something unexpected happened in the Superset backend. Please reach out
to your administrator.

## Issue 1012

```
The username provided when connecting to a database is not valid.
```

The user provided a username that doesn't exist in the database. Please check
that the username is typed correctly and exists in the database.

## Issue 1013

```
The password provided when connecting to a database is not valid.
```

The user provided a password that is incorrect. Please check that the
password is typed correctly.

## Issue 1014

```
Either the username or the password used are incorrect.
```

Either the username provided does not exist or the password was written incorrectly. Please
check that the username and password were typed correctly.

## Issue 1015

```
Either the database is spelled incorrectly or does not exist.
```

Either the database was written incorrectly or it does not exist. Check that it was typed correctly.

## Issue 1016

```
The schema was deleted or renamed in the database.
```

The schema was either removed or renamed. Check that the schema is typed correctly and exists.

## Issue 1017

```
The user doesn't have the proper permissions to connect to the database
```

We were unable to connect to your database. Please confirm that your service account has the Viewer and Job User roles on the project.

## Issue 1018

```
One or more parameters needed to configure a database are missing.
```

Not all parameters required to test, create, or edit a database were present. Please double check which parameters are needed, and that they are present.

## Issue 1019

```
The submitted payload has the incorrect format.
```

Please check that the request payload has the correct format (eg, JSON).

## Issue 1020

```
The submitted payload has the incorrect schema.
```

Please check that the request payload has the expected schema.

## Issue 1021

```
Results backend needed for asynchronous queries is not configured.
```

Your instance of Superset doesn't have a results backend configured, which is needed for asynchronous queries. Please contact an administrator for further assistance.

## Issue 1022

```
Database does not allow data manipulation.
```

Only `SELECT` statements are allowed against this database. Please contact an administrator if you need to run DML (data manipulation language) on this database.

## Issue 1023

```
CTAS (create table as select) doesn't have a SELECT statement at the end.
```

The last statement in a query run as CTAS (create table as select) MUST be a SELECT statement. Please make sure the last statement in the query is a SELECT.

## Issue 1024

```
CVAS (create view as select) query has more than one statement.
```

When running a CVAS (create view as select) the query should have a single statement. Please make sure the query has a single statement, and no extra semi-colons other than the last one.

## Issue 1025

```
CVAS (create view as select) query is not a SELECT statement.
```

When running a CVAS (create view as select) the query should be a SELECT statement. Please make sure the query has a single statement and it's a SELECT statement.

## Issue 1026

```
Query is too complex and takes too long to run.
```

The submitted query might be too complex to run under the time limit defined by your Superset administrator. Please double check your query and verify if it can be optimized. Alternatively, contact your administrator to increase the timeout period.

## Issue 1027

```
The database is currently running too many queries.
```

The database might be under heavy load, running too many queries. Please try again later, or contact an administrator for further assistance.

## Issue 1028

```
One or more parameters specified in the query are malformed.
```

The query contains one or more malformed template parameters. Please check your query and confirm that all template parameters are surround by double braces, for example, "\{\{ ds \}\}". Then, try running your query again.

## Issue 1029

```
The object does not exist in this database.
```

Either the schema, column, or table do not exist in the database.

## Issue 1030

```
The query potentially has a syntax error.
```

The query might have a syntax error. Please check and run again.

## Issue 1031

```
The results backend no longer has the data from the query.
```

The results from the query might have been deleted from the results backend after some period. Please re-run your query.

## Issue 1032

```
The query associated with the results was deleted.
```

The query associated with the stored results no longer exists. Please re-run your query.

## Issue 1033

```
The results stored in the backend were stored in a different format, and no longer can be deserialized.
```

The query results were stored in a format that is no longer supported. Please re-run your query.

## Issue 1034

```
The database port provided is invalid.
```

Please check that the provided database port is an integer between 0 and 65535 (inclusive).

## Issue 1035

```
Failed to start remote query on a worker.
```

The query was not started by an asynchronous worker. Please reach out to your administrator for further assistance.

## Issue 1036

```
The database was deleted.
```

The operation failed because the database referenced no longer exists. Please reach out to your administrator for further assistance.
