(window.webpackJsonp=window.webpackJsonp||[]).push([[63],{"1J4g":function(e,t,a){"use strict";a.r(t),a.d(t,"_frontmatter",(function(){return u})),a.d(t,"default",(function(){return b}));var r=a("k1TG"),n=a("8o2o"),s=(a("q1tI"),a("7ljp")),o=a("hhGP"),u=(a("qKvR"),{});void 0!==u&&u&&u===Object(u)&&Object.isExtensible(u)&&!u.hasOwnProperty("__filemeta")&&Object.defineProperty(u,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"src/pages/docs/Miscellaneous/issue_codes.mdx"}});var i={_frontmatter:u},c=o.a;function b(e){var t=e.components,a=Object(n.a)(e,["components"]);return Object(s.b)(c,Object(r.a)({},i,a,{components:t,mdxType:"MDXLayout"}),Object(s.b)("h1",{id:"issue-code-reference"},"Issue Code Reference"),Object(s.b)("p",null,"This page lists issue codes that may be displayed in\nSuperset and provides additional context."),Object(s.b)("h2",{id:"issue-1000"},"Issue 1000"),Object(s.b)("pre",null,Object(s.b)("code",Object(r.a)({parentName:"pre"},{}),"The datasource is too large to query.\n")),Object(s.b)("p",null,"It's likely your datasource has grown too large to run the current\nquery, and is timing out. You can resolve this by reducing the\nsize of your datasource or by modifying your query to only process a\nsubset of your data."),Object(s.b)("h2",{id:"issue-1001"},"Issue 1001"),Object(s.b)("pre",null,Object(s.b)("code",Object(r.a)({parentName:"pre"},{}),"The database is under an unusual load.\n")),Object(s.b)("p",null,"Your query may have timed out because of unusually high load on the\ndatabase engine. You can make your query simpler, or wait until the\ndatabase is under less load and try again."),Object(s.b)("h2",{id:"issue-1002"},"Issue 1002"),Object(s.b)("pre",null,Object(s.b)("code",Object(r.a)({parentName:"pre"},{}),"The database returned an unexpected error.\n")),Object(s.b)("p",null,"Your query failed because of an error that occurred on the database.\nThis may be due to a syntax error, a bug in your query, or some other\ninternal failure within the database. This is usually not an\nissue within Superset, but instead a problem with the underlying\ndatabase that serves your query."),Object(s.b)("h2",{id:"issue-1003"},"Issue 1003"),Object(s.b)("pre",null,Object(s.b)("code",Object(r.a)({parentName:"pre"},{}),"There is a syntax error in the SQL query. Perhaps there was a misspelling or a typo.\n")),Object(s.b)("p",null,"Your query failed because of a syntax error within the underlying query. Please\nvalidate that all columns or tables referenced within the query exist and are spelled\ncorrectly."),Object(s.b)("h2",{id:"issue-1004"},"Issue 1004"),Object(s.b)("pre",null,Object(s.b)("code",Object(r.a)({parentName:"pre"},{}),"The column was deleted or renamed in the database.\n")),Object(s.b)("p",null,"Your query failed because it is referencing a column that no longer exists in\nthe underlying datasource. You should modify the query to reference the\nreplacement column, or remove this column from your query."),Object(s.b)("h2",{id:"issue-1005"},"Issue 1005"),Object(s.b)("pre",null,Object(s.b)("code",Object(r.a)({parentName:"pre"},{}),"The table was deleted or renamed in the database.\n")),Object(s.b)("p",null,"Your query failed because it is referencing a table that no longer exists in\nthe underlying database. You should modify your query to reference the correct\ntable."),Object(s.b)("h2",{id:"issue-1006"},"Issue 1006"),Object(s.b)("pre",null,Object(s.b)("code",Object(r.a)({parentName:"pre"},{}),"One or more parameters specified in the query are missing.\n")),Object(s.b)("p",null,"Your query was not submitted to the database because it's missing one or more\nparameters. You should define all the parameters referenced in the query in a\nvalid JSON document. Check that the parameters are spelled correctly and that\nthe document has a valid syntax."))}void 0!==b&&b&&b===Object(b)&&Object.isExtensible(b)&&!b.hasOwnProperty("__filemeta")&&Object.defineProperty(b,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"src/pages/docs/Miscellaneous/issue_codes.mdx"}}),b.isMDXComponent=!0}}]);
//# sourceMappingURL=component---src-pages-docs-miscellaneous-issue-codes-mdx-04e45ab50a2a01a4186d.js.map