# "relation does not exist" when the table is right there

The table is visible in the dashboard and the query insists it does not exist. Do not recreate it; you will end up with two tables and twice the confusion. The query and the table disagree about where the table lives.

## Symptom to cause to confirmation to fix

1. Schema-qualify the table in the query (`public.my_table`) and retry. If it works qualified but not bare, the connection's search_path does not include the schema. Fix the search_path or keep qualifying.
2. Confirm the migration applied to this database. Local, branch, and production are different databases; a table created locally does not exist in production until the migration is pushed and applied. Check the migration history on the target.
3. Check case sensitivity. Unquoted `MyTable` folds to lowercase in Postgres; a table created quoted as "MyTable" is a different relation. Pick lowercase snake_case names and stop quoting.
4. Check you are connected to the right project. Dev, staging, and production connection strings look alike, and agents run migrations against the wrong one more often than anyone admits.
5. For functions and views, check the search_path baked into the definition. A function created when the path was different resolves tables differently than your current session.

## Verification

Query the table qualified, unqualified, and from a fresh connection with the default search_path. All three must agree before you call it fixed.