Troubleshooting
The messages the app and DuckDB actually show, what each one means, and what I do about it.
These are the literal strings from the code, so search this page for the text on your screen. DuckDB's own errors start with a category such as Binder Error or Conversion Error.
Loading a file
| What you see | Why | Fix |
| This file is large (250MB). Processing may be slow. Continue? | The file is over 100 MB. It will still load; the prompt is a warning. | Continue on a laptop. Prefer Parquet for files this size: it says It will be loaded in streaming mode and reads only the columns a query needs. |
| This file is too large for in-browser processing. Try closing other tabs or using a smaller file. | The tab ran out of memory. Browsers cap a tab at a few gigabytes. | Close other tabs, or cut the file first. Converting a CSV to Parquet elsewhere often gets a file under the ceiling. |
| Loading is taking too long. Try a smaller file or filter it externally first. | 60 seconds passed (180 for PDFs, images and database files). | Same as above. For a PDF, crop to the pages with tables before uploading. |
| This file is not a PDF: it has no PDF header. If it is a scan or a screenshot, upload it as a PNG or JPG instead. | Something was renamed to .pdf. | Do what it says. Images of tables go through OCR. |
CSV shape and encoding
| What you see | Why | Fix |
| Rows in this file have inconsistent column counts, so short rows were padded with empty values. | Some rows have fewer fields than the header. DuckDB's sniffer does not flag this, so the app checks the result itself and retries with padding. | Nothing, if the short rows are real. Otherwise look for an unquoted comma in a text field. quality-messy.csv in the samples shows the warning. |
| Loaded with every column as text after stricter parses failed. Use type conversion to fix column types. | The last-resort parse: every column VARCHAR. | Open a Column Explorer card to see what is in the column, then Convert Type the ones that should be numbers or dates. |
| One column named id,name,city holding whole lines | An unclosed quote, or a delimiter the sniffer did not try. | Click the gear on the file tab, Configure CSV parsing, and set Delimiter and Quote Character by hand. |
| This file is not valid UTF-8, so it was read as Windows-1252 (Latin). Check that accented characters look right. | A Latin-1 or Windows export. | Usually correct as is. If not, pick the Encoding in Configure CSV parsing. |
| A numeric column is text, values like $1,200.50 | Currency signs and thousands commas are text to the sniffer. | Convert Type to Number strips $ , € £ ₹ % and accounting brackets before casting. |
SQL Query steps
| What you see | Why | Fix |
| Binder Error: Referenced column "amount" not found in FROM clause! | No column of that exact name at this point in the pipeline. Quoted names are case-sensitive. | Check the header, or an earlier step that renamed or dropped it. "Amount" and "amount" are different columns once quoted. |
| Catalog Error: Table with name orders does not exist! | The table is named after the file, with punctuation turned to underscores. | Write FROM data. The alias always means the input to this step, whatever the file was called. |
| Conversion Error: Could not convert string '$1,200' to DOUBLE | A CAST met a value it cannot read. | Use TRY_CAST, which gives NULL instead of failing, or run Convert Type first, which cleans the string. |
| Binder Error: No function matches the given name and argument types 'sum(VARCHAR)' | SUM on a text column. | Convert the column to Number. The Group & Aggregate panel catches this earlier: SUM needs a number column, but "amount" is text. Convert it first with Convert Type. |
A hand-written WHERE "notes" IS NULL misses blank cells | Blank text and NULL differ. | Test both, the way the Condition Builder's is empty does: ("notes" IS NULL OR "notes" = ''). |
AI generation
| What you see | Why | Fix |
| Invalid API key. Check your key in Settings. | The provider returned 401 or 403. | Paste the key again and click Test. Keys are per provider; switching provider means entering its key. |
| Rate limited. Try again in 20s. | 429 from the provider. | Wait the number of seconds shown. |
| Empty response. Try rephrasing your request. | The model returned nothing once code fences were stripped. | Name the columns you mean. |
| Generation failed after 4 attempts: … | The output failed validation four times, with the error fed back each time. | Read the trailing error; it is usually a column the model invented. |
Everything else
| What you see | Why | Fix |
| Schema mismatch: existing table has 9 columns (…), but the new file has 8 columns (…). | Appending a file whose header differs. | Match the columns, or load it as a second table and use Union All. |
| Append is not supported for large parquet files loaded in streaming mode. Export as CSV first, then re-import. | A streamed Parquet file is a read-only view. | Do what it says, or use Union All. |
| A Session Expired screen | The app was opened from a stale copy that has not checked in with the site for a long time. | Reload from exploremydata.com while online. |
Open quality-messy.csv and watch the padding warning →