On 7/10/19 2:56 AM, Alex Williams wrote:
Hi,
Can someone point me in the right direction for this issue we are having -- our
goal is to dump a database that is currently on a tablespace named data2 that
we want to restore on the same server but on tablespace pg_default -- we tried
other ways like:
ALTER DATABASE "[database_name]" SET default_tablespace = [new_tablespace];
alter table all in tablespace data2 set tablespace pg_default;
But we want to try it with a pgdump/psql.
To reproduce on our end (Server 9.5):
1. create new database for the restore with the tablespace as pg_default
2. Dump the source database (currently on data2 tablespace) with the following
command:
sudo -u postgres pg_dump mydatabase --no-owner --no-tablespaces | gzip >
mydatabase.gz
3. Restore the database with this command:
zcat /var/backup/db/mydatabase.gz | sudo -H -u postgres psql
--quiet -e -c 'SET default_tablespace = pg_default;' -f - mydatabase_test >
/tmp/mydatabase_test.log
What happens during the restore is that all tables are created on data2, not
pg_default.
Any help would be greatly appreciated.
This should work.
Double-check each step to make sure nothing has been missed out somewhere, e.g.
in step 2 you create mydatabase.gz in the current working directory but in step
3 restore it
from an absolute filepath, which is a common cause of errors.
Also maybe try dumping an individual table definition (pg_dump --schema-only
--table=sometablename ...) and check
exactly what's being dumped and how it gets restored.
Regards
Ian Barwick
--
Ian Barwick https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services