Bu hata neden oluşur?
Nedenler, sahada karşılaştığımız sıklığa göre sıralıdır.
- 01
wp-config.php'de yanlış veritabanı bilgileri
Çok sıkDB_NAME, DB_USER, DB_PASSWORD ya da DB_HOST değerlerinden biri yanlış yazılmış ya da hosting tarafında değiştirilmiş olabilir.
- 02
Veritabanı sunucusu çalışmıyor ya da aşırı yüklenmiş
SıkPaylaşımlı sunucularda MySQL servisi geçici olarak durabilir ya da eş zamanlı bağlantı limiti dolabilir.
- 03
Bozuk veritabanı tabloları
SıkAni kapanma, yarım kalan güncelleme ya da disk sorunu tabloları bozabilir; WordPress bu durumda da bağlantı hatası gösterebilir.
- 04
Bozuk ya da değiştirilmiş çekirdek dosyaları
Ara sırawp-config.php ya da wp-includes/wp-db.php dosyası elle düzenlenmiş, eksik yüklenmiş ya da bir saldırı sonrası değiştirilmiş olabilir.
- 05
Hosting tarafında IP/host kısıtlaması
NadirenBazı kurulumlarda veritabanı sunucusu farklı bir sunucuda çalışır ve yeni sunucu IP'sinin erişimi tanımlı değildir.
Adım adım çözüm
Veritabanını onarmadan ya da dosya değiştirmeden önce tam bir veritabanı ve dosya yedeği alın.
- 1
/wp-admin/ adresini kontrol edin
Siteniz hata verirken /wp-admin/ adresini açın. Burada "One or more database tables are unavailable" gibi daha ayrıntılı bir mesaj görürseniz sorun büyük ihtimalle bozuk tablolardadır, kimlik bilgisi sorunu değildir.
- 2
wp-config.php dosyasındaki veritabanı bilgilerini doğrulayın
Sunucudaki wp-config.php dosyasını açın ve DB_NAME, DB_USER, DB_PASSWORD, DB_HOST satırlarını hosting kontrol panelindeki (ör. cPanel > MySQL Databases) gerçek değerlerle karşılaştırın. Tek bir karakter farkı bile hataya yol açar.
phpdefine( 'DB_NAME', 'veritabani_adi' ); define( 'DB_USER', 'veritabani_kullanicisi' ); define( 'DB_PASSWORD', 'veritabani_sifresi' ); define( 'DB_HOST', 'localhost' ); - 3
DB_HOST değerini test edin
Bazı hosting sağlayıcılarında (ör. GoDaddy, bazı paylaşımlı sunucular) veritabanı "localhost" yerine ayrı bir sunucu adresinde çalışır. (hosting sağlayıcınızın veritabanı sunucu adresini destek dokümanından teyit edin) Doğru host değerini panelden ya da destek ekibinden alın.
- 4
Komut satırından veritabanına bağlanmayı deneyin
Sunucuya SSH erişiminiz varsa aynı bilgilerle doğrudan MySQL'e bağlanmayı deneyin. Bağlantı başarısız olursa sorun WordPress'te değil, veritabanı sunucusunda ya da kimlik bilgilerindedir.
bashmysql -u veritabani_kullanicisi -p -h localhost veritabani_adi - 5
WP-CLI ile veritabanı sağlığını kontrol edin
WP-CLI kuruluysa aşağıdaki komutla bağlantıyı ve tabloları hızlıca kontrol edebilirsiniz. Komut çalışmazsa bağlantı sorunu, tablo hatası verirse veritabanı onarımı gerekir.
bashwp db check - 6
Veritabanını onarım moduna alın
Önce tam yedek alın. Ardından wp-config.php dosyasına aşağıdaki satırı ekleyip siteyi.com/wp-admin/maint/repair.php adresini açın; WordPress arayüzden "Repair Database" seçeneğini sunar. İşlem bittikten sonra bu satırı silin.
phpdefine( 'WP_ALLOW_REPAIR', true ); - 7
Sunucu kaynaklarını ve bağlantı limitini kontrol edin
Hosting kontrol panelinden ya da destek ekibinden MySQL servisinin çalışıp çalışmadığını, max_connections değerinin dolup dolmadığını sorun. [bu ayar sunucuya göre değişir, panel adı ve limit hostinge göre farklıdır]
- 8
Eklenti/tema çakışmasını test edin
Önce yedek alın. Eklentileri toplu devre dışı bırakmak için FTP/SSH üzerinden plugins klasörünü geçici olarak yeniden adlandırın; site açılırsa eklentileri tek tek geri getirip sorunluyu bulun.
bashmv wp-content/plugins wp-content/plugins-disabled - 9
Hosting destek ekibiyle iletişime geçin
Yukarıdaki adımlar sonuç vermezse sorun sunucu tarafında olabilir. Hata zaman damgasını ve yaptığınız kontrolleri destek ekibiyle paylaşarak süreci hızlandırabilirsiniz.
Hangi sürümlerde görülüyor?
| WordPress | PHP | Durum | Not |
|---|---|---|---|
| WordPress 5.2 ve üzeri | PHP 7.4 | Görülüyor | Bu sürümlerden itibaren /wp-admin/ altında daha ayrıntılı tablo hatası mesajı gösterilebilir. |
| WordPress 5.1 ve öncesi | PHP 7.4 | Görülüyor | Sadece genel "Error establishing a database connection" mesajı gösterilir, ayrıntı verilmez. |
Çözüldüğünü nasıl anlarsınız?
- Site ana sayfası ve /wp-admin/ girişi hatasız açılıyor.
- wp db check komutu hata döndürmüyor.
- Hosting panelinde MySQL servisi "çalışıyor" durumunda görünüyor.
- Eklenti klasörü eski adına geri döndürüldü ve site çalışmaya devam ediyor.
Ne zaman uzmana başvurmalı?
Veritabanı kimlik bilgileri doğruysa ve sunucu çalışıyorsa ama hata sürüyorsa, sorun genelde bozuk tablolarda ya da dosya düzeyinde bir müdahalededir. Hata Ayıklama ve Onarım hizmetimizde veritabanı loglarını, sunucu kayıtlarını ve dosya bütünlüğünü birlikte inceleyip kök nedeni bularak kalıcı çözüm sunuyoruz.
İlgili sayfalar: Hata Ayıklama ve Onarım · Acil Müdahale · Bu sitede kritik bir hata oluştu · WordPress hata çözümleri
Bu hatayı ₺2.500'e 2 saatte çözelim.
Sabit fiyat, kopya sitede çalışma, yazılı çözüm notu. Aynı hata 7 gün içinde tekrar ederse ücretsiz.
Sık sorulanlar
Error establishing a database connection ne demek?
WordPress'in veritabanı sunucusuna bağlanamadığı, dolayısıyla sayfa içeriğini çekemediği anlamına gelir. Sorun genelde sunucu tarafındadır, içerikleriniz çoğu zaman yerinde durur.
Bu hata verilerimi siler mi?
Hayır, hata bağlantı kuramama durumudur; veritabanı dosyaları genelde bozulmaz. Ancak altında yatan neden bozuk tablo ise, onarım öncesi mutlaka yedek almanız gerekir.
Localhost'ta (XAMPP) bu hatayı alıyorum, neden?
Yerel kurulumlarda genelde MySQL servisi başlatılmamıştır ya da wp-config.php'deki kullanıcı adı/şifre XAMPP'ın varsayılan değerleriyle (genelde kullanıcı 'root', boş şifre) uyuşmuyordur. [XAMPP sürümünüzdeki varsayılan kimlik bilgilerini kontrol paneli üzerinden teyit edin]
GoDaddy ya da Namecheap gibi hosting'lerde neden sık görülür?
Bu sağlayıcılarda veritabanı bazen ayrı bir sunucuda barındırılır ve DB_HOST değeri 'localhost' değil, sağlayıcıya özel bir adres olabilir. Doğru değeri hosting panelinden almanız gerekir.
Error establishing a redis connection ile aynı hata mı?
Hayır. Bu farklı bir hatadır ve object cache olarak kullanılan Redis sunucusuna bağlanılamadığını gösterir; veritabanı bağlantı hatasıyla karıştırılmamalıdır.