Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Soluções para problemas comuns de conectividade, esquema e SSL do PostgreSQL no Data API Builder.
Perguntas frequentes
O que é o suporte ao PostgreSQL em DAB?
O Data API Builder suporta o PostgreSQL como um back-end de base de dados relacional. O DAB liga-se usando o driver Npgsql e traduz pedidos REST e GraphQL em consultas SQL. São suportadas tanto instâncias PostgreSQL auto-hospedadas como serviços geridos, como Azure Database for PostgreSQL.
Que formato de string de ligação usa o PostgreSQL?
O DAB utiliza uma cadeia de ligação ao estilo ADO.NET para PostgreSQL. Uma corda típica assemelha-se a Host=localhost;Port=5432;Database=mydb;Username=myuser;Password=mypassword;. Defina a cadeia de ligação no data-source.connection-string campo de dab-config.json ou passe-a via --connection-string em dab init.
O DAB suporta esquemas PostgreSQL?
Yes. O DAB suporta esquemas não públicos. Referenciar explicitamente o esquema no campo da source entidade usando o formato schemaname.tablename (por exemplo, sales.orders). O utilizador da base de dados configurado na cadeia de ligação deve ter USAGE privilégios no esquema e SELECT, INSERT, UPDATE, ou DELETE privilégios nas tabelas de destino.
Problemas comuns
Não é possível ligar-se ao contentor PostgreSQL
Sintoma: O DAB falha ao iniciar devido a Failed to connect to localhost:5432 ou a um erro de rede semelhante.
Causa: A porta do contentor PostgreSQL não está mapeada ou o contentor não está pronto para aceitar ligações.
Resolução: Confirma que o contentor está a funcionar com docker ps e que essa porta 5432 está mapeada para o host. Use Host=localhost;Port=5432 na corda de ligação. Se o contentor acabou de começar, espere alguns segundos para o PostgreSQL inicializar antes de iniciar o DAB.
Autenticação por palavra-passe falhada
Sintoma: Os registos DAB mostram 28P01: password authentication failed for user.
Causa: O nome de utilizador ou palavra-passe na cadeia de ligação está incorreto, ou o utilizador PostgreSQL está configurado para um método de autenticação diferente, como peer ou ident.
Resolução: Verifique se as credenciais correspondem às definidas quando a instância ou contentor PostgreSQL foi criada. Para contentores, verifique as POSTGRES_PASSWORD variáveis de ambiente e POSTGRES_USER . Se estiver a correr localmente, confirme que pg_hba.conf permite md5 ou scram-sha-256 autenticação para o host que se liga.
Esquema não encontrado quando a entidade faz referência a um esquema não público
Sintoma: O DAB devolve um relation "tablename" does not exist erro mesmo que a tabela exista na base de dados.
Causa: O campo da source entidade omite o prefixo de esquema, por isso o PostgreSQL pesquisa apenas o public esquema por defeito.
Resolução: Atualize o source valor em dab-config.json para incluir o prefixo de esquema, por exemplo sales.orders. Confirme que o utilizador da base de dados tem USAGE no esquema executando GRANT USAGE ON SCHEMA sales TO myuser; em psql.
Erro de SSL obrigatório ao estabelecer ligação ao Azure Database para PostgreSQL
Sintoma: As ligações ao Azure Database para PostgreSQL falham com SSL connection is required.
Causa: O Azure Database for PostgreSQL aplica SSL por defeito. As ligações sem SSL são rejeitadas.
Resolução: Acrescentar Ssl Mode=Require; à cadeia de ligação. Para validação completa do certificado, defina Trust Server Certificate=false e forneça também o caminho do certificado da CA do servidor via Root Certificate=path/to/ca.pem. Descarregue o pacote de certificados do portal Azure, nas definições de Rede do servidor.
Procedimentos armazenados não são suportados
Sintoma: Configurar um procedimento ou função armazenada do PostgreSQL como fonte de entidade pode falhar, ou a entidade pode não se comportar como esperado.
Causa: O Data API Builder não suporta atualmente procedimentos armazenados para PostgreSQL. Esta é uma limitação conhecida registada na edição #1023 do GitHub.
Resolução: Use uma tabela ou vista como fonte da entidade em vez disso. Siga o problema no GitHub para atualizações sobre quando será adicionado o suporte a procedimentos armazenados do PostgreSQL.
A política de base de dados não é aplicada para operações Create
Sintoma: Um pedido de criação de mutação ou POST tem sucesso mesmo quando uma política de base de dados deve restringir a operação.
Causa: O suporte a políticas de base de dados para ações Create no PostgreSQL ainda não está implementado. Esta é uma limitação conhecida registada na edição #1334 do GitHub.
Resolução: Use permissões baseadas em funções para restringir o acesso de criação até que o suporte de políticas para bases de dados para PostgreSQL Create esteja disponível.
A política da base de dados não é aplicada para operações PUT e PATCH
Sintoma: Um pedido PUT ou PATCH numa entidade PostgreSQL tem sucesso mesmo quando uma política de base de dados deveria restringi-lo.
Causa: O suporte a políticas de base de dados para operações PUT e PATCH no PostgreSQL ainda não está implementado. Esta é uma limitação conhecida registada na edição #1372 do GitHub.
Resolução: Utilize permissões baseadas em funções para restringir o acesso a atualizações até que esteja disponível suporte a políticas de base de dados para operações de atualização PostgreSQL.
A autenticação On-Behalf-Of (OBO) não é suportada.
Sintoma: Configurar a autenticação On-Behalf-Of (OBO) para uma instância DAB suportada por PostgreSQL falha ou o token não é encaminhado para a base de dados como esperado.
Causa: A autenticação OBO é atualmente suportada apenas para SQL Server e Azure SQL. O suporte para PostgreSQL, MySQL e Azure Cosmos DB ainda não foi implementado. Esta é uma limitação conhecida registada na edição #3159 do GitHub.
Resolução: Use um método de autenticação suportado, como credenciais de string de ligação ou identidade gerida para PostgreSQL. Siga a edição do GitHub para atualizações sobre quando o suporte OBO for expandido para bases de dados não SQL Server.