Как да се справим с грешка при свързване с базата данни (DB - data base) - WordPress

Blinky

Administrator
Екип
Като WordPress разработчик или уеб администратор, ужасяваща ситуация е, когато сайтът ви не работи. Вие не само губите входящ трафик, но и класирането и репутацията на вашия сайт също са засегнати.

Една от грешките, които карат вашия сайт да бъде временно недостъпен, е грешката при връзката с базата данни. Може да сте попаднали на тази грешка, когато откриете, че въвеждате URL адреса на вашия сайт и не се появява нищо друго освен това съобщение за грешка: „Грешка при установяване на връзка с база данни (Error establishing a database connection.)“.

Ако някога сте се сблъсквали с тази грешка или сте в разгара на намирането на решението, не се притеснявайте! Тук ще ви покажа как да поправите тази грешка много лесно – по правилния начин. Като следвате внимателно стъпките, ще можете да върнете сайта си отново онлайн и да възстановите целия си трафик и абонати за нула време.

Какво правим при установяване на грешка при свързване с база данни?

Преди да преминем към същината, нека отделим малко време, за да разберем какво всъщност означава тази грешка. Грешката при свързване с база данни по същество означава, че по някаква причина PHP кодът не е успял да се свърже с вашата MySQL база данни, за да извлече информацията, от която се нуждае, за да изгради напълно тази страница. Ето защо грешката винаги се показва на празна страница, защото няма информация за вашия сайт, тъй като той не е свързан с вашата база данни.

Защо възниква грешката при установяване на връзка с база данни?

След като разбрахме значението на грешката, трябва да разберем какво причинява грешката, когато се опитаме да отворим нашия WordPress сайт. Това може да се дължи на много причини, тъй като грешките в свързаността на базата данни може да имат няколко различни основни причини.

1. Неправилни данни за вход. Например, това може да се дължи на грешно потребителско име и парола за влизане, използвани за достъп до административния панел. Ако идентификационните данни за вход са се променили наскоро, няма да имате достъп до вашата база данни със старите. Така че първата ви стъпка трябва да сте сигурни, че идентификационните данни за вход, които въвеждате, са точни.

2. Повредена база данни. Друга възможност е базата данни да е повредена. Базата данни на WordPress може да бъде повредена от редица неща, като инсталиране на дефектен или несъвместим плъгин. Друга вероятна причина може да е, че сървърът, който хоства вашата база данни, може временно да не работи.

Това са някои от възможните причини, които може да са причинили грешката. Сега, когато знаете каква е грешката и как вероятно е била причинена, нека се опитаме да поправим тази грешка и да възстановим сайта си онлайн.
 
Как да се справим с грешка при свързване с DB (data base - база данни).

Преди да коригираме грешката, трябва да определим какво точно причинява грешката.

Метод 1: Поправете базата данни

Първо трябва да проверим дали нашата база данни е наред. Ако можете да виждате сайта си нормално и да получите грешка при опит за достъп до страницата wp-admin или да получите различна грешка, която казва „Една или повече таблици на базата данни не са достъпни. Базата данни може да се наложи да бъде поправена." когато се опитате да получите достъп до вашия сайт, това са ясни признаци, че вашата база данни е повредена. За щастие вашата база данни може лесно да бъде поправена с помощта на вградена функция на WordPress. По подразбиране функцията е деактивирана, така че трябва да я активирате сами, за да поправите вашата база данни, като влезете във файла wp-admin.php и добавите този код:

PHP:
define( 'WP_ALLOW_REPAIR', true );

Този прост код ви позволява да поправите и оптимизирате вашата база данни. След като добавите този ред, просто отидете на www.yoursite.com/wp-admin/maint/repair.php. Ще се появи страница с две подобни опции – първата опция ще бъде опцията Repair, която ще поправи вашата база данни, а втората ще бъде опцията Repair and Optimize, която ще поправи и оптимизира вашата база данни за бъдещи грешки и ще я поддържа стабилна.

Грешката Repair and Optimize отнема повече време от обикновената опция за Repair, така че ако нямате време, просто изберете първата опция.

Друго важно нещо, което трябва да имате предвид, е, че страницата Repair, която току-що отворихте, след като сте поставили реда код във файла wp-admin.php, не е защитена; тъй като всеки има достъп до този URL, без да се налага да влиза. Така че не забравяйте да премахнете този малък ред код от файла wp-admin.php, който сте поставили по-рано, след като успешно поправите вашия сайт. Правейки това се гарантира, че никой няма да се опита да достъпи опциите на вашата база данни в бъдеще.

Метод 2: Промяна на идентификационните данни за вход

Все още нямате късмет с успешното отваряне на уебсайта си дори след ремонт на базата данни? Трябва да разгледате настройките за влизане в базата данни във файла wp-config. Вашите идентификационни данни за вход в базата данни може да са спрели да работят, защото може да сте променили вашата хостинг компания или някаква друга информация за вашата база данни, която не е актуализирана ръчно във файла wp-config. Отворете файла wp-config отново както преди и намерете информацията за вход в базата данни; вероятно ще бъде близо до горната част на файла.

Виж файлът 343config-copy.png

Той показва името на базата данни като „DB_NAME“, потребителското име „DB_USER“, паролата за влизане като „DB_PASSWORD“ и хоста на базата данни като „DB_HOST“ - обикновено localhost. След като преминете през цялата тази информация, уверете се, че всичко е правилно, тъй като WordPress няма да може да се свърже с базата данни, ако някоя от тези стойности е неправилна.

Можете да проверите вашата база данни извън WordPress, като използвате PHPMyAdmin, който по същество е инструмент за достъп и редактиране на MySQL бази данни. Но бъдете внимателни, когато използвате този инструмент, тъй като той манипулира директно базата данни на вашия сайт – има голям шанс да объркате нещата, ако не знаете какво правите.
  • След като влезете от вашия PHPMyAdmin акаунт, щракнете върху вашата база данни от списък с бази данни на вашия сървър. Уверете се, че щракнете върху тази, която съвпада с името в wp-config файла, която току-що проверихте.
  • След като щракнете върху името на базата данни, ще видите много имена на таблиците във вашата база данни. За да сте сигурни, че името на базата данни е правилно, намерете таблицата с име wp_options и щракнете върху бутона Преглед до нея.
  • Това ще ви отведе до страница, където ще можете да видите името, URL адреса и други общи настройки на вашия уебсайт WordPress. Уверете се, че е същото като в файла wp-config, който видяхте по-рано. Ако обаче не е, отидете да го поправите във файла wp-config, преди да продължите.
Това е всичко за името на базата данни. Преминавайки към паролата и потребителското име, има няколко начина да проверите дали и двете са правилни. Един от начините е да проверите дали вече съществуващите потребителско име и парола за вход са правилни, е като създадете прост .php файл, който ще тества дали можете да се свържете с базата данни, като използвате идентификационните данни за вход от файла wp-config или съществуващо потребителско име и парола за вход. За да тествате, просто създайте .php файл, наименувайте го както искате и добавете този код към него:

PHP:
<?php $testConnection = mysql_connect('localhost', 'root', 'password'); if (!$testConnection) { die('Error: ' . mysql_error()); } echo 'Congratulations! The database connection works!'; mysql_close($testConnection); ?>
- при PHP 5

PHP:
<?php
$link = mysqli_connect('localhost', 'username', 'password');
if (!$link) {
die('Could not connect: ' . mysqli_error());
}
echo 'Connected successfully';
mysqli_close($link);
?>
- при PHP 7+

Този код ви позволява да тествате връзката, като отидете на URL адреса на файла във вашия браузър. Например, ако задам името на .php файла на sample-file.php, тогава ще използвам URL адреса www.yoursite.com/sample-file.php. Или ще получите успешна връзка, или в най-лошия случай, друга грешка с повече подробности, което означава, че предишните ви данни за вход не работят и имате нужда от нови.

За да създадем нов потребител и парола за база данни, препоръчвам да използвате различен инструмент, наличен в конртолния панел, наречен MySQL Databases. Просто отидете щракнете върху това и под заглавието MySQL Users щракнете върху Добавяне на нов потребител. Това ще ви отведе до нова страница, която ви иска новите данни.

След като изберете потребителско име и парола, запишете ги във файла wp-config. Щракнете върху Създаване на потребител, за да продължите. На следващия екран щракнете върху Добавяне на потребител към базата данни, изберете вашето ново потребителско име и вашата база данни на WordPress и щракнете върху Добавяне.

След като приключите с добавянето на новия потребител към базата данни, просто актуализирайте своя wp-config файл с новото потребителско име и парола. Това гарантира, че името, паролата и потребителското име на вашата база данни са 100% правилни.

Метод 3: Поправете повредени файлове

Ако пълното отстраняване на неизправностите във вашата база данни дори не работи, последното нещо, което можете да опитате, е да поправите всички повредени файлове в WordPress. Много потребители, които не успяха да идентифицират основния си проблем, напълно изтриха всичките си файлове и грешката изчезна. Така че точно това ще направим сега, тъй като грешката може да е поради повредени файлове на WordPress.

Въпреки това, тъй като говорим за основните системни файлове, трябва да бъдете много внимателни. Най-малката грешка може да изтрие целия ви сайт. Преди да продължим, най-добре е да архивирате всичките си данни ръчно или с помощта на плъгин. Следващото нещо, от което се нуждаем, са нови, свежи WordPress файлове, които да заменят старите повредени файлове, които ни създават проблеми.
  • Изтеглете ново копие на WordPress CMS от WordPress.org.
  • Разархивирайте го във вашето устройство и изтрийте цялата папка wp-contents и файла wp-config, така че да няма шанс да презапишете текущия си wp-config файл. Освен това цялата упорита работа, която сте положили в настройката на теми и плъгини досега, няма да бъде загубена.
  • След като изтриете заразените или повредени файлове, поставете останалите файлове в основната папка на WordPress с помощта на файловия мениджър или FTP клиент.
Това ще замени повредените файлове или файловете, които причиняват грешката. Като следвате тези прости стъпки, ще можете лесно да поправите грешката при свързване с база данни. Презаредете страницата, след като сте готови и всичко трябва да е наред. Ако сте следвали целия този гайд по ред (и правилно) и проблемът продължава да съществува, следващата логична стъпка би била да се свържете с представителите за поддръжка на вашата уеб хостинг услуга, защото е напълно възможно грешката да възникне в сървъра. Не забравяйте да кажете на поддръжката за мерките, които сте предприели, за да разрешите проблема.
 
Последно редактирано:
Това превод от някъде ли е, защото mysql* функциите са от години остарели и вече премахнати. Предлагам да обновиш тези части от поста, защото се очаква да има въпроси "защо не работи при мен".

Също $testConnection при присвояването са разделени.
 
Това превод от някъде ли е, защото mysql* функциите са от години остарели и вече премахнати. Предлагам да обновиш тези части от поста, защото се очаква да има въпроси "защо не работи при мен".

Също $testConnection при присвояването са разделени.
Да, писана е преди време и сигурно става дума за PHP 5, добро включване. Не съм го погледнал това. ;) Нали се сещаш, че с селектора ще е играта тук. Оправих променливата. Дори два отделни кода сложих за всеки случай. :)

По-скоро е преразказана, като не съм си правил труда да мисля много дали кода е за старите версии, видя ми се правилен. :)
 
Предвид, че е guide е желателно съдържанието да е автентично и актуално. Вдига се имиджа на форума.

Все пак, като ще привличаме потребители е нужно съдържанието, което е тук да не им създава потенциални проблеми.

Това със селектора не го разбрах.
 
Предвид, че е guide е желателно съдържанието да е автентично и актуално. Вдига се имиджа на форума.

Все пак, като ще привличаме потребители е нужно съдържанието, което е тук да не им създава потенциални проблеми.

Това със селектора не го разбрах.
Такова е, както написах е преразказано с мои си думи. Само това мисля, че различното от новостите в WP средата.

В контролния панел имаш PHP Selector, който сменя версията на PHP за акаунта, това имах предвид. А ако искаш човек да го направи на събдомейн или отделен аддон домейн, правиш го през .htaccess-а. Не е нещо важно, просто го споменавам.
 
Много текст,
това е роман който само ботовете ще прочетат или може би това е идеята?
Като го закъсаш с такъв проблем си готов да изчетеш целия свят, за да си го решиш. Нямаше как да бъде по-сбито, и аз това си мислех. щом излизам над 10 000 символа, както ми се случи в този пост и още 1-2, ми става ясно, че наистина малко се пресилвам. Просто статията, която прочетох беше толкова голяма. И за някой, който се сблъсква за пръв път с този проблем, ще има нужда лека, бавно и детайлно да му се разкаже. А за ботовете е само бонус. :)
 
Не решава проблема само ако е грешка при свързване в сървъра :D :D :D Чест проблем при няколко български хостинга, не са много, ама направо съм късал косите си от таквиа работи и същевременно съпорта: " Уебсайта Ви работи "..........................................

А иначе бих препоръчал и ползването на следния плъгин винаги когато има възможнст администратора на сайта. Полезно е редовно да се почиства BD поне на 2-3 седмици ,зависи и от натоварването на сайта де, може и по-често да е. Та за почистване и поправяне на BD препоръчвам това плъгинче. Пускам го само когато ще правя тази процедура - WP-Optimize - https://bg.wordpress.org/plugins/wp-optimize/
 
Да, този плъгин е много добър и прави сайта доста по-пъргав, ако знае човек как да борави с него. И най-вече, много ме радва защото чисти талаша, който се трупа в BD, не, че не можеш да го направиш и през PHPMyAdmin, но шанса там да намажеш нещо е по-голям. :)

Скоро ще пусна и още интересни неща. Последно време ми се налага да ровя по такива системи с проблеми. Мерси за включването. ;)
 

Back
Горе