Eu tenho uma configuração clássica de 3 ambientes (desenvolvimento, preparação e produção), cada um com seu próprio RDS PostgreSQL 9.3 . As versões cliente/servidor são psql (9.3.5, server 9.3.3)
.
Para manter os esquemas alinhados, tenho um trabalho periódico de comparação de esquemas, que me notifica quando os esquemas diferem.
Alguns dias atrás, comecei a ter muitas dessas diferenças:
CREATE TABLE ...
...
< title pg_catalog.text,
< subtitle pg_catalog.text,
---
> title text,
> subtitle text,
Os text
campos em staging foram de alguma forma convertidos pg_catalog.text
em prod.
Qual é a diferença entre text
e pg_catalog.text
? Como posso igualar os dois esquemas?
Eles são a mesma coisa em uma instalação padrão.
pg_catalog.text
é a versão qualificada pelo esquema do tipo nametext
.O
search_path
sempre contémpg_catalog
automaticamente. Por documentação:Ênfase em negrito minha. Se você fizer isso, o Postgres iniciará automaticamente os nomes de qualificação de esquema na representação de texto, que, de outra forma, seriam resolvidos de maneira diferente. Isso é provavelmente o que você vê. Verifique sua corrente
search_path
com:Intimamente relacionado:
Como posso falsificar inet_client_addr () para testes de unidade no PostgreSQL?
Como criar uma tabela dentro de um esquema específico por padrão no Postgres?