Postgresql - pg_dump - no matching schemas were found
-
03-07-2021 - |
Question
I'm trying to create a backup from PostgreSQL database, but getting the following error: pg_dump: No matching schemas were found
I'm logged in as root and running the command
pg_dump -f db.dump --format=plain --schema=existing_schema --username=userx --host=localhost databasename
- I logged in with userx to psql and tried \dt - this gave me information, that schema with name existing_schema is public.
- I checked \l to see that databasename is the database name.
- Password is correct, otherwise I could not access psql.
- Localhost is correct, checked from running processes. Tried the ip-address of the server also, but in this case pg_admin gave an error about the host address.
Output of \dl:
List of relations Schema | Name | Type | Owner --------+-------------------------------------+-------+------- public | existing_schema | table | userx
Solution
The schema's name is public
.
existing_schema
is the name of a table in the schema public.
It's not clear from your pg_dump commandline what you want to do.
If you want to export all tables from the schema public
you need to specify:
--schema=public
If you want to export only the table existing_schema
then you need to specify:
--table=existing_schema
OTHER TIPS
You can try with back slash and double quote as metioned here.
sudo -u postgres pg_dump -v Database_Name -t "\"Table_Name\""
For future googlers, in my case my schema had dots ("my.schema"), and the proper way to address this is by escaping:
pg_dump -U postgres -d mydatabase --schema \"my.schema\"
In my case the schema name was upper case and no matter what I tried (-n MYSCHEMA
, -n "MYSCHEMA"
, -n "\"MYSCHEMA\""
) it did not work until I renamed the schema to "myschema" in the database. Then I could dump with all of -n MYSCHEMA
, -n "MYSCHEMA"
, and -n "\"MYSCHEMA\""
.
It looks like pg_dump internally uses lower case, that means it doesn't quote the schema name given in the command line.
However when calling pg_dump with -n """MYSCHEMA"""
it works.
When adding a table name however the option -n did not work anymore for me. If schema and table-name contains capitalized letters, I used this:
pg_dump -f file.txt -t \"MySchema\".\"MyTable\"
.