Thread: moving a database to a new 15.1 server

moving a database to a new 15.1 server

From
Matthias Apitz
Date:
Hello,

The source database in the 12.11 server shows this:

$ psql -Ulbs_lbsoclc01_dev_r1_dbo_u $DATABASE
psql (12.11)
Type "help" for help.

lbs_lbsoclc01_dev_r1=>
lbs_lbsoclc01_dev_r1=> \d
                              List of relations
 Schema |             Name              | Type  |           Owner            
--------+-------------------------------+-------+----------------------------
 dbo    | accession_index               | table | lbs_lbsoclc01_dev_r1_dbo_u
 dbo    | acq_bind                      | table | lbs_lbsoclc01_dev_r1_dbo_u
 ... 

I dumped this with pg_dump 

$ pg_dump --file=dmp.gz --compress=9 --dbname=$DATABASE

Created in the new server the database

$ createdb -U lbs_lbsoclc01_dev_r1_dbo_u -T template0 lbs_lbsoclc01_dev_r1

and the role for thw user with

CREATE ROLE lbs_lbsoclc01_dev_r1_dbo_u WITH SUPERUSER CREATEDB LOGIN PASSWORD 'xxxxxx' ;
CREATE ROLE

and loaded the dump with

$ gzip -dc dmp.gz | psql -U lbs_lbsoclc01_dev_r1_dbo_u lbs_lbsoclc01_dev_r1

This all went fine. But when I now look into the database:

$ psql -Ulbs_lbsoclc01_dev_r1_dbo_u lbs_lbsoclc01_dev_r1
psql (15.1)
Type "help" for help.

lbs_lbsoclc01_dev_r1=#
lbs_lbsoclc01_dev_r1=# \d
Did not find any relations.
lbs_lbsoclc01_dev_r1=# \d dbo.accession_index
                        Table "dbo.accession_index"
      Column      |         Type          | Collation | Nullable | Default 
------------------+-----------------------+-----------+----------+---------
 iln              | smallint              |           | not null | 

lbs_lbsoclc01_dev_r1=# select count(*) from counter;
ERROR:  relation "counter" does not exist
LINE 1: select count(*) from counter;
                             ^
lbs_lbsoclc01_dev_r1=# select count(*) from dbo.counter;
 count 
-------
    41

i.e. I have to specify the schema 'dbo' to access the tables.

What I am missing here in this move?

    matthias



-- 
Matthias Apitz, ✉ guru@unixarea.de, http://www.unixarea.de/ +49-176-38902045
Public GnuPG key: http://www.unixarea.de/key.pub



Re: moving a database to a new 15.1 server

From
Thomas Kellerer
Date:
Matthias Apitz schrieb am 01.02.2023 um 13:24:
> $ psql -Ulbs_lbsoclc01_dev_r1_dbo_u lbs_lbsoclc01_dev_r1
> psql (15.1)
> Type "help" for help.
>
> lbs_lbsoclc01_dev_r1=#
> lbs_lbsoclc01_dev_r1=# \d
> Did not find any relations.
> lbs_lbsoclc01_dev_r1=# \d dbo.accession_index
>                         Table "dbo.accession_index"
>       Column      |         Type          | Collation | Nullable | Default
> ------------------+-----------------------+-----------+----------+---------
>  iln              | smallint              |           | not null |
>
> lbs_lbsoclc01_dev_r1=# select count(*) from counter;
> ERROR:  relation "counter" does not exist
> LINE 1: select count(*) from counter;
>                              ^
> lbs_lbsoclc01_dev_r1=# select count(*) from dbo.counter;
>  count
> -------
>     41
>
> i.e. I have to specify the schema 'dbo' to access the tables.

you need to change the search_path

    alter user lbs_lbsoclc01_dev_r1_dbo_u set search_path = dbo;

This was probably done on the old server. You can see the user's definition
if you dump the "globals" from the old server:

   pg_dumpall -U postgres --globals-only -f globals.sql







Re: moving a database to a new 15.1 server

From
Erik Wienhold
Date:
> On 01/02/2023 13:24 CET Matthias Apitz <guru@unixarea.de> wrote:
>
> The source database in the 12.11 server shows this:
>
> $ psql -Ulbs_lbsoclc01_dev_r1_dbo_u $DATABASE
> psql (12.11)
> Type "help" for help.
>
> lbs_lbsoclc01_dev_r1=>
> lbs_lbsoclc01_dev_r1=> \d
>                               List of relations
>  Schema |             Name              | Type  |           Owner
> --------+-------------------------------+-------+----------------------------
>  dbo    | accession_index               | table | lbs_lbsoclc01_dev_r1_dbo_u
>  dbo    | acq_bind                      | table | lbs_lbsoclc01_dev_r1_dbo_u
>  ...
>
> I dumped this with pg_dump
>
> $ pg_dump --file=dmp.gz --compress=9 --dbname=$DATABASE
>
> Created in the new server the database
>
> $ createdb -U lbs_lbsoclc01_dev_r1_dbo_u -T template0 lbs_lbsoclc01_dev_r1
>
> and the role for thw user with
>
> CREATE ROLE lbs_lbsoclc01_dev_r1_dbo_u WITH SUPERUSER CREATEDB LOGIN PASSWORD 'xxxxxx' ;
> CREATE ROLE
>
> and loaded the dump with
>
> $ gzip -dc dmp.gz | psql -U lbs_lbsoclc01_dev_r1_dbo_u lbs_lbsoclc01_dev_r1
>
> This all went fine. But when I now look into the database:
>
> $ psql -Ulbs_lbsoclc01_dev_r1_dbo_u lbs_lbsoclc01_dev_r1
> psql (15.1)
> Type "help" for help.
>
> lbs_lbsoclc01_dev_r1=#
> lbs_lbsoclc01_dev_r1=# \d
> Did not find any relations.
> lbs_lbsoclc01_dev_r1=# \d dbo.accession_index
>                         Table "dbo.accession_index"
>       Column      |         Type          | Collation | Nullable | Default
> ------------------+-----------------------+-----------+----------+---------
>  iln              | smallint              |           | not null |
>
> lbs_lbsoclc01_dev_r1=# select count(*) from counter;
> ERROR:  relation "counter" does not exist
> LINE 1: select count(*) from counter;
>                              ^
> lbs_lbsoclc01_dev_r1=# select count(*) from dbo.counter;
>  count
> -------
>     41
>
> i.e. I have to specify the schema 'dbo' to access the tables.
>
> What I am missing here in this move?

Your search_path does not contain dbo.  Check  SHOW search_path;  in the old
database and set the search_path with ALTER DATABASE in the new database accordingly.

--
Erik