Error establishing a database connection: WordPress-də həlli

Error establishing a database connection: WordPress-də həlli

Sayt açılmır və ağ fonda yalnız "Error establishing a database connection" yazısı görünür: bu, WordPress-in MySQL verilənlər bazasına qoşula bilmədiyini bildirir. Qısa cavab: səbəb adətən dörd yerdən birindədir: wp-config.php-dəki məlumatlar səhvdir, bazanın istifadəçisinin icazəsi yoxdur, MySQL server yüklənib və ya cədvəllər zədələnib. Aşağıda onları ardıcıl yoxlamağı göstəririk; əksər hallarda məlumat itmir.

Xəta nə deməkdir

WordPress hər səhifə açılışında PHP vasitəsilə MySQL-ə qoşulur və yazılar, ayarlar, istifadəçilər oradan oxunur. Qoşulma alınmayanda WordPress bu mesajı göstərir və brauzerə 500 status kodu qaytarır. Fayllarınız yerindədir, sadəcə məlumatlara çatmaq mümkün olmur.

Diaqnostika üçün iki sual verin:

  • Problem birdən başladı, yoxsa nəyisə dəyişdikdən sonra? Parol dəyişikliyi, köçürmə və ya yeni plagin konkret səbəbə işarə edir.
  • Eyni hostinqdəki digər saytlar işləyirmi? Hamısında eyni xəta varsa, problem MySQL serverindədir və dəstək xidmətinə müraciət etmək lazımdır.

wp-admin-də "One or more database tables are unavailable" mesajı görürsünüzsə, bu, zədələnmiş cədvəllərə işarədir: aşağıdakı WP_ALLOW_REPAIR bölməsinə keçin.

1. wp-config.php məlumatlarını yoxlayın

File Manager-də saytın kök qovluğundakı wp-config.php faylını açın və bu dörd sətri tapın:

define( 'DB_NAME', 'cpuser_wpdb' );
define( 'DB_USER', 'cpuser_wpuser' );
define( 'DB_PASSWORD', 'bazanin-parolu' );
define( 'DB_HOST', 'localhost' );
  • cPanel-də baza və istifadəçi adlarının əvvəlinə hesab adı və alt xətt əlavə olunur (cpuser_). Adları cPanel → MySQL Databases səhifəsindəki siyahı ilə hərf-hərf müqayisə edin.
  • Paylaşılan hostinqdə DB_HOST adətən localhost olur.
  • Parolda tək dırnaq (') varsa, sətir sınır; parolu dırnaqsız yenisi ilə əvəz etmək daha asandır.

Məlumatların düzgünlüyünü WordPress-dən asılı olmadan yoxlamaq üçün kök qovluqda müvəqqəti dbtest.php faylı yaradın:

<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
try {
    $db = new mysqli('localhost', 'cpuser_wpuser', 'bazanin-parolu', 'cpuser_wpdb');
    echo 'Qoşulma uğurludur';
} catch (mysqli_sql_exception $e) {
    echo 'Xəta: ' . $e->getMessage();
}

Faylı brauzerdə açın. "Access denied for user" parol və ya istifadəçi adının səhv olduğunu, "Unknown database" isə bazanın adının səhv olduğunu göstərir. Yoxlamadan dərhal sonra faylı silin, çünki içində parol var.

2. İstifadəçi icazələrini yoxlayın

Ad və parol düzgün ola bilər, amma istifadəçi bazaya bağlanmayıbsa, qoşulma yenə alınmır. cPanel → MySQL Databases səhifəsində:

  1. "Current Databases" cədvəlində bazanın yanında "Privileged Users" sütununa baxın; istifadəçiniz orada yoxdursa, aşağıdakı "Add User To Database" bölməsində istifadəçini və bazanı seçin.
  2. Növbəti səhifədə ALL PRIVILEGES seçib Make Changes basın.
  3. Parolu xatırlamırsınızsa, "Current Users" bölməsində Change Password ilə yeni parol təyin edin və onu wp-config.php-də yeniləyin.

3. MySQL yüklənməsi və limitlər

Xəta bəzən görünüb bəzən yox olursa, səbəb çox vaxt yükdür. Eyni anda həddən artıq sorğu gələndə istifadəçi üçün icazə verilən qoşulma sayı (max_user_connections) dolur və yeni ziyarətçilər xəta görür. Tipik mənbələr:

  • keşsiz işləyən sayta bot və ya axtarış robotu axını;
  • hər səhifədə ağır sorğu işlədən plaginlər;
  • illərlə yığılmış revizyalar, müvəqqəti məlumatlar və böyümüş cədvəllər.

LiteSpeed Cache ilə səhifə keşini aktiv etmək bazaya gedən sorğuları ciddi azaldır. Bazanı təmizləmək üçün MySQL optimallaşdırma qaydalarına baxın.

Diqqət: wp-config.php-ni siz dəyişməmisinizsə, amma içində tanımadığınız kod və ya dəyişmiş məlumatlar varsa, sayt sındırılmış ola bilər. Bunun tez-tez rast gəlinən mənbəyi nulled tema və plaginlərdir.

4. Zədələnmiş cədvəllər: WP_ALLOW_REPAIR

WordPress-in daxili təmir aləti var. wp-config.php-yə bu sətri əlavə edin:

define( 'WP_ALLOW_REPAIR', true );

Sonra https://numune.az/wp-admin/maint/repair.php ünvanını açın və "Repair Database" və ya "Repair and Optimize Database" seçin. Bu səhifə girişsiz açıldığı üçün təmirdən dərhal sonra sətri silin.

Alternativ yollar: cPanel → MySQL Databases → "Modify Databases" bölməsində Repair Database, ya da SSH-də WP-CLI:

wp db check
wp db repair

Köçürmədən sonra tipik səhvlər

Xəta ən çox saytı başqa hostinqdən köçürəndən sonra çıxır. Yoxlama siyahısı:

  • Köhnə DB_HOST qalıb. Əvvəlki provayderdə baza ayrıca serverdə ola bilərdi, yeni yerdə isə localhost lazımdır.
  • Prefiks dəyişib. Yeni cPanel-də hesab adı fərqlidirsə, baza və istifadəçi adları da fərqli olur.
  • İdxal yarımçıq qalıb. Böyük dump faylı vaxt limitinə düşəndə bəzi cədvəllər yaradılmır. phpMyAdmin-də cədvəllərin sayını köhnə saytla müqayisə edin.
  • Versiya fərqi. Köhnə və yeni serverdə MySQL/MariaDB versiyaları fərqlidirsə, idxal zamanı "Unknown collation" xətası çıxa bilər.
  • $table_prefix uyğun deyil. Bu halda WordPress xəta yox, quraşdırma səhifəsi göstərir. Quraşdırmanı başlatmayın, wp-config.php-də prefiksi düzəldin.
  • DNS hələ köhnə serverə baxır. Köhnə hostinqdə bazanı artıq silmisinizsə, xəta oradan gəlir.

Köçürmənin bütün mərhələlərini WordPress-i başqa hostinqə köçürmək yazısında izah etmişik.

Bərpadan sonra: admin panel və SEO

Qısa müddətli xəta axtarış nəticələrinə ciddi təsir etmir, çünki WordPress 500 kodu qaytarır və Google səhifəni sonra yenidən yoxlayır. Xəta saatlarla davam edibsə, Search Console-da səhifələrin yenidən indekslənməsini izləyin və başlıqların düzgün göründüyünü yoxlayın; bunun üçün meta title və description yazmaq bələdçimizdən istifadə edə bilərsiniz. Sayt açıldı, amma panelə girə bilmirsinizsə, wp-admin açılmır yazısına keçin.

Tez-tez verilən suallar

Heç nə dəyişməmişəm, xəta özbaşına çıxdı. Niyə?

Ən çox səbəb yük və ya MySQL serverində qısa müddətli problemdir. Digər saytlarınız da işləmirsə, dəstəyə yazın; yalnız bir sayt işləmirsə, sındırılma ehtimalını da yoxlayın.

Məlumatlarım itdimi?

Adətən xeyr: məlumatlar bazada qalır, sadəcə ona qoşulmaq mümkün olmur. Qoşulma bərpa olunanda sayt əvvəlki kimi açılır.

WP_ALLOW_REPAIR sətrini saxlamaq olarmı?

Xeyr. Bu sətir aktiv olanda təmir səhifəsini istənilən şəxs girişsiz aça bilər, ona görə işiniz bitən kimi onu silin.

DB_HOST-a localhost əvəzinə 127.0.0.1 yazmaq olarmı?

Bunlar fərqli qoşulma üsullarıdır (socket və TCP) və bəzən fərqli nəticə verir. cPanel-də dəstək başqa dəyər deməyibsə, localhost saxlayın.

Bu xəta çox vaxt qısa müddətdə həll olunur, köçürmədən sonrakı səhvlərin qarşısını isə yoxlanmış köçürmə alır. Hostinq.az pulsuz sayt köçürmə xidməti təklif edir; WordPress üçün sürətli mühit lazımdırsa, professional sürətli hostinq paketlərinə baxın.

Paylaş: