Estou tentando criar uma cópia de um banco de dados no postgresql de acordo com a resposta do SO de 2009, mas estou tendo problemas.
No Postgres 9.3.9, isso cria um banco de dados sem relações (o gcis db existe e possui tabelas e dados):
postgres=# CREATE DATABASE gcis_rollback WITH TEMPLATE gcis OWNER postgres;
CREATE DATABASE
postgres=# \c gcis_rollback
You are now connected to database "gcis_rollback" as user "postgres".
gcis_rollback=# \d
No relations found.
Eu recebo o mesmo usando a linha de comando createdb
:
~$ createdb -O postgres -T gcis gcis_rollback2
~$ psql gcis_rollback2
psql (9.3.9)
Type "help" for help.
gcis_rollback2=# \d
No relations found.
Por que não vejo uma cópia completa deste banco de dados?
Background - Este é um servidor dev, onde posso derrubar as conexões para fazer uma cópia. O que eu quero é apenas uma cópia local para facilitar os propósitos de reversão ao desenvolver/testar mudanças no esquema do banco de dados usando o framework Perl Module::Build::Database para construir um patch.
Informações adicionais :
gcis=# \l+ gcis
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges | Size | Tablespace | Description
------+----------+----------+-------------+-------------+-------------------+-------+------------+-------------
gcis | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 35 MB | pg_default |
gcis=# \d
List of relations
Schema | Name | Type | Owner
---------------+------------------------------+----------+--------
gcis_metadata | _report_editor | table | ubuntu
...
(57 rows)
Obrigado a @a_horse_with_no_name por me levar a esta resposta.
As relações parecem estar faltando porque o Postgres não copia
search_path
para o novo banco de dados. Se você olhar explicitamente no esquema específico, todas as relações estarão lá:Portanto, o
search_path
precisa ser definido explicitamente no novo banco de dados:@Erwin Brandstetter também fornece mais informações sobre como visualizar o search_path para funções/dbs.