PostgreSQL sorunlarını giderme

Data API builder'daki yaygın PostgreSQL bağlantısı, şema ve SSL sorunları için çözümler.

Sık sorulan sorular

DAB'de PostgreSQL desteği nedir?

Veri API'si oluşturucusu ilişkisel veritabanı arka ucu olarak PostgreSQL'i destekler. DAB, Npgsql sürücüsünü kullanarak bağlanır ve REST ve GraphQL isteklerini SQL sorgularına çevirir. Hem şirket içinde barındırılan PostgreSQL örnekleri hem de PostgreSQL için Azure Veritabanı gibi yönetilen hizmetler desteklenir.

PostgreSQL hangi bağlantı dizesi biçimini kullanıyor?

DAB, PostgreSQL için ADO.NET tarzı bir bağlantı dizesi kullanır. Tipik bir dize gibi Host=localhost;Port=5432;Database=mydb;Username=myuser;Password=mypassword; görünür. data-source.connection-string alanındaki dab-config.json alanına bağlantı dizesini ayarlayın ya da dab init içindeki --connection-string üzerinden geçirin.

DAB, PostgreSQL şemalarını destekliyor mu?

Evet. DAB, genel olmayan şemaları destekler. Varlığın source alanında, schemaname.tablename biçiminde şemaya açıkça başvurun (örneğin, sales.orders). Bağlantı dizesinde yapılandırılan veritabanı kullanıcısının şema üzerinde USAGE ayrıcalığı ve hedef tablolarda SELECT, INSERT, UPDATE veya DELETE ayrıcalıkları olmalıdır.

Yaygın sorunlar

PostgreSQL kapsayıcısına bağlanılamıyor

Belirti: DAB, Failed to connect to localhost:5432 ile veya benzer bir ağ hatası nedeniyle başlamıyor.

Neden: PostgreSQL kapsayıcı bağlantı noktası eşlenmemiş veya kapsayıcı bağlantıları kabul etmeye hazır değil.

Çözüm: Kapsayıcının çalışır durumda olduğunu ve docker ps ile bağlantı noktası 5432'nin ana bilgisayara eşlendiğini onaylayın. Bağlantı dizesinde kullanın Host=localhost;Port=5432 . Kapsayıcı yeni başlatıldıysa, DAB'yi başlatmadan önce PostgreSQL'in başlatılması için birkaç saniye bekleyin.

Parola kimlik doğrulaması başarısız oldu

Belirti: DAB günlükleri gösterir 28P01: password authentication failed for user.

Neden: Bağlantı dizesindeki kullanıcı adı veya parola yanlış veya PostgreSQL kullanıcısı veya peergibi ident farklı bir kimlik doğrulama yöntemi için yapılandırılmış.

Çözünürlük: PostgreSQL örneği veya kapsayıcısı oluşturulduğunda kimlik bilgilerinin bu kümelerle eşleştiğinden emin olun. Kapsayıcılar için POSTGRES_PASSWORD ve POSTGRES_USER ortam değişkenlerini denetleyin. Yerel olarak çalışıyorsa, pg_hba.confmd5 veya scram-sha-256 kimlik doğrulamasına izin verip vermediğini bağlanan ana bilgisayar için doğrulayın.

Varlık genel olmayan bir şemaya başvurduğunda şema bulunamadı

Belirti: VERITABANıNDA tablo mevcut olsa bile DAB bir relation "tablename" does not exist hata döndürür.

Neden: Varlığın source alanı şema ön ekini atlar, bu nedenle PostgreSQL varsayılan olarak yalnızca şemayı public arar.

Çözünürlük:source içindeki değerini dab-config.json şema ön ekini içerecek şekilde güncelleştirin, örneğin sales.orders. Şemada USAGE izinlerine sahip olduğunu doğrulamak için psql içinde GRANT USAGE ON SCHEMA sales TO myuser; komutunu çalıştırarak veritabanı kullanıcısını onaylayın.

Azure Veritabanı for PostgreSQL'e bağlanırken SSL gereklidir hatası

Belirti: PostgreSQL için Azure Veritabanı bağlantıları SSL connection is required nedeniyle başarısız olur.

Neden: PostgreSQL için Azure Veritabanı varsayılan olarak SSL'i zorunlu bırakır. SSL olmayan bağlantılar reddedilir.

Çözünürlük: Bağlantı dizesine ekleyin Ssl Mode=Require; . Tam sertifika doğrulaması için Trust Server Certificate=false'yi ayarlayın ve Root Certificate=path/to/ca.pem aracılığıyla sunucu CA sertifika yolunu sağlayın. Sunucunun ayarları altındaki Azure portalından sertifika paketini indirin.

Saklı yordamlar desteklenmez

Belirti: PostgreSQL saklı yordamını veya işlevini varlık kaynağı olarak yapılandırma işlemi başarısız oluyor veya varlık beklendiği gibi davranmıyor.

Neden: Veri API oluşturucusu şu anda PostgreSQL için saklı yordamları desteklememektedir. Bu, GitHub sorunu #1023'te izlenen bilinen bir sınırlamadır.

Çözünürlük: Bunun yerine varlık kaynağı olarak bir tablo veya görünüm kullanın. PostgreSQL saklı yordam desteği eklendiğinde güncellemeler için GitHub konusunu izleyin.

Veritabanı politikası, Oluşturma işlemleri için uygulanmaz

Belirti: Bir veritabanı ilkesinin işlemi kısıtlaması gerektiğinde bile mutasyon oluşturma veya POST isteği başarılı olur.

Neden: PostgreSQL'de eylem oluşturma için veritabanı ilkesi desteği henüz uygulanmadı. Bu, GitHub sorunu #1334'te izlenen bilinen bir sınırlamadır.

Çözünürlük: PostgreSQL Oluşturma için veritabanı ilkesi desteği sağlanana kadar erişimi kısıtlamak için rol tabanlı izinleri kullanın.

PUT ve PATCH işlemleri için veritabanı ilkesi zorunlu tutulmadı

Belirti: PostgreSQL varlığındaki PUT veya PATCH isteği, veritabanı ilkesinin bunu kısıtlaması gerektiğinde bile başarılı olur.

Neden: PostgreSQL'deki PUT ve PATCH işlemleri için veritabanı ilkesi desteği henüz uygulanmadı. Bu, GitHub sorunu #1372'de izlenen bilinen bir sınırlamadır.

Çözünürlük: PostgreSQL güncelleştirme işlemleri için veritabanı ilkesi desteği sağlanana kadar güncelleştirme erişimini kısıtlamak için rol tabanlı izinleri kullanın.

Başkası Adına (OBO) kimlik doğrulaması desteklenmiyor

Belirti: PostgreSQL destekli DAB örneği için On-Behalf-Of (OBO) kimlik doğrulaması yapılandırıldığında başarısız olur veya belirteç beklendiği gibi veritabanına iletilmez.

Neden: OBO kimlik doğrulaması şu anda yalnızca SQL Server ve Azure SQL için desteklenmektedir. PostgreSQL, MySQL ve Azure Cosmos DB desteği henüz uygulanmadı. Bu, GitHub sorunu #3159'da izlenen bilinen bir sınırlamadır.

Çözünürlük: PostgreSQL için bağlantı dizesi kimlik bilgileri veya yönetilen kimlik gibi desteklenen bir kimlik doğrulama yöntemi kullanın. OBO desteği SQL Server dışı veritabanlarına genişletildiğinde yapılan güncelleştirmeler için GitHub sorununu izleyin.