dataiotech Labs
dbaguidedbaguideDBAdataxtoolsdataopsphere
Home/Hata Teşhis Kütüphanesi/postgresql-database-or-role-does-not-exist
PostgreSQL
PG 14 - 17Kimlik & Güvenlik
3 dk okuma
FATAL: database "prod" does not exist / FATAL: role "deploy" does not exist

PostgreSQL "database does not exist" ve "role does not exist" Hataları: Kök Neden, Acil Müdahale ve IaC Çözümü

Typo, büyük/küçük harf tırnak duyarlılığı ("Prod" vs prod) ve restore/migration sonrası eksik rol/veritabanı ayrımı, acil nesne oluşturma ve Terraform / IaC yönetimi.

İnceleyen:Kıdemli Veritabanı Mimarı & SRE (dataiotech Labs)
Test Edilen Sürümler: PostgreSQL 14 / 15 / 16 / 17

Operasyonel Doğrulama & Güvenilirlik Standardı

Son Teknik İnceleme: 2 Kasım 2026
Test Edilen SürümlerPostgreSQL 14.10, 15.6, 16.4, 17.11 (Ubuntu 24.04 / Alpine Linux)
Gerekli YetkiSUPERUSER veya CREATEDB / CREATEROLE yetkisi
Risk Seviyesi
LowEksik rol veya veritabanı sebebiyle deployment pipeline'ları CrashLoopBackOff durumuna geçer
Beklenen Çıktı\l ve \du listesinde hedef veritabanı ve rolün doğru sahiplik ve izinlerle listelenmesi
Geri Dönüş (Rollback) Planı:DROP DATABASE / DROP ROLE komutları ile temizleme
PostgreSQL Docs: CREATE ROLE & CREATE DATABASE
İlk 60 Saniye Teşhis Protokolü:

Hata mesajı semptomdur, kök neden değildir. Sunucuyu yeniden başlatmadan veya rastgele ayar değiştirmeden önce aşağıdaki "Nedeni ayırt eden tek sorgu"yu çalıştırarak gerçek senaryoyu netleştirin.

▸Belirti

Uygulama veya CI/CD deployment pipeline'ı başlarken bağlantı reddedilir ve sunucu loglarında şu hata görünür:

plaintext
FATAL: database "prod" does not exist FATAL: role "deploy" does not exist

▸Sahada Ne Görürsün?

Kubernetes pod'ları CrashLoopBackOff durumuna düşer. Veritabanı sağlıklıdır ancak istemci yanlış isim veya tırnaklama nedeniyle kümeye kabul edilmez.


▸Kök Neden Matrisi

OlasılıkKök NedenAçıklama
%50Büyük/Küçük Harf ve TırnaklamaPostgreSQL tırnaksız tanımlayıcıları küçük harfe zorlar (lowercase). "Prod" ile prod farklı nesnelerdir.
%30Restore / Dump Sonrası Eksik Rolpg_dump sadece şema ve veriyi alır, küme seviyesindeki rolleri (pg_dumpall --globals-only) taşımaz.
%20Konfigürasyon / TypoOrtam değişkenlerinde (DATABASE_URL, POSTGRES_DB) yazım hatası yapılmıştır.

▸ACİL RUNBOOK (0-5dk)

sql
-- 1. Mevcut veritabanlarını ve sahiplerini listele \l -- 2. Mevcut rolleri ve oturum izinlerini listele \du -- 3. Acil eksik veritabanını oluştur ve yetkilendir CREATE DATABASE prod OWNER app_user; -- 4. Acil eksik rolü oluştur ve şifre ata CREATE ROLE deploy LOGIN PASSWORD 'GucluGeciciSifre2026!'; GRANT CONNECT ON DATABASE prod TO deploy;

▸KALICI BLUEPRINT & IaC

  1. 1Globals Dump Standardı: Küme rolleri mutlaka düzenli yedeklenmelidir: pg_dumpall --globals-only -f /backups/globals.sql
  2. 2Terraform / IaC Otomasyonu: Rol ve veritabanı yönetimi kodla tanımlanmalıdır.
  3. 3Migration Kontrolü: Liquibase/Flyway init aşamasında idempotent IF NOT EXISTS kontrolleri eklenmelidir.

▸Doğrulama

sql
SELECT datname, pg_catalog.pg_get_userbyid(datdba) AS owner FROM pg_database WHERE datname = 'prod'; SELECT rolname, rolcanlogin FROM pg_roles WHERE rolname = 'deploy';

Diğer Veritabanı Hata Teşhisleri

Kriz anında başvurabileceğiniz diğer doğrulanmış hata rehberleri.

Tüm Hatalar (82)