moving a database to a new 15.1 server
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
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
-------
41i.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
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 ROLEand 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
-------
41i.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