Erreur lors de la création d'une connexion à la base de données
WordPress chargé, lu wp-config.php, et ne pouvait pas obtenir de réponse de MySQL. Chaque page du site est vide jusqu'à ce qu'elle le puisse.
Error establishing a database connection
Neuf fois sur dix, les identifiants dans wp-config.php ne correspondent plus à la base de données. Confirmez avec une connexion directe en utilisant exactement ces quatre valeurs; si cela se connecte, le problème n'est pas les identifiants et la section suivante vous indique où chercher.
Les causes les plus probables d’abord.
Parcourez la liste dans l’ordre. Vérifiez chaque cause avant de modifier quoi que ce soit : les correctifs diffèrent et une supposition coûte plus cher qu’une commande.
| Cause | Comment vérifier | Correctif |
|---|---|---|
| Mauvaises références dans wp-config.php | Connectez-vous à la main avec les mêmes quatre valeurs que wp-config.php utilise. Si cela échoue avec "Accès refusé", le fichier est le problème et rien d'autre n'a besoin de test. | Correct DB_NAME, DB_USER, DB_PASSWORD et DB_HOST. Une migration est la raison habituelle pour laquelle ils ont dérivé : l'archive a apporté les valeurs de l'ancien hôte avec elle. |
| Le serveur de base de données ne fonctionne pas | La même connexion directe échoue avec "ne peut pas se connecter" plutôt que "Accès refusé". La distinction entre ces deux messages est l'ensemble du diagnostic. | Démarrez MySQL. Si elle ne reste pas debout, son propre journal d'erreur donne le nom de la raison et sur l'hébergement partagé, cette raison est généralement la mémoire. |
| La base de données a atteint sa limite de connexion | L'erreur est intermittente - le site fonctionne, puis ne fonctionne pas, puis ne fonctionne. Une connexion directe réussit alors que les visiteurs voient toujours l'erreur. | Levez max_connections, ou trouvez ce qui maintient les connexions ouvertes. Un plugin ouvrant une connexion par requête et ne jamais la fermer est le coupable commun. |
| Une table corrompue | Seulement quelques pages échouent, ou wp-admin charge alors que la première extrémité ne le fait pas. WordPress peut offrir un lien de réparation au lieu de cette erreur. | Lancez une réparation. Définissez WP_ALLOW_REPAIR dans wp-config.php, visitez /wp-admin/maint/repair.php, puis supprimez la constante - cette page n'a pas d'authentification. |
| DB_HOST nomme quelque chose d'inatteignable | Les lettres de créances sont correctes et MySQL est en place, mais l'hôte dans wp-config.php ne résout pas à partir du serveur web. | Utilisez le nom d'hôte que le serveur web peut effectivement atteindre. Sur les piles conteneurisées qui est un nom de service, pas localhost, et localhost est ce que contiennent les configs les plus migrés. |
Corriger l’erreur, étape par étape.
Les commandes supposent un accès à WP-CLI et au terminal. Si vous n’en disposez pas, chaque étape explique comment procéder depuis le tableau de bord ou via SFTP.
Lire ce que dit wp-config.php en fait
Pas ce que vous vous souvenez de la configuration. Les quatre constantes qui comptent sont près du haut du fichier.
grep -E "DB_(NAME|USER|PASSWORD|HOST)" wp-config.php
Essayez ces valeurs exactes contre MySQL
C'est le test qui divise le problème en deux. "Accès refusé" signifie que les identifiants sont erronés; "Impossible de se connecter" signifie que le serveur ne répond pas.
mysql --user='DB_USER' --password='DB_PASSWORD' --host='DB_HOST' 'DB_NAME' -e 'SELECT 1;'
Si les lettres de créances étaient erronées, corrigez-les.
Edit wp-config.php, ou les configurer avec WP-CLI pour que vous n'ayez pas à trouver les bonnes citations vous-même.
wp config set DB_PASSWORD 'the-real-password' wp db check
Si le serveur était en panne, regardez pourquoi avant de le redémarrer
Un MySQL qui est mort une fois mourra à nouveau. Son journal d'erreur donne le nom de la raison, et hors mémoire est la réponse la plus courante sur un petit serveur.
tail -n 50 /var/log/mysql/error.log
Confirmer de WordPress, pas de la coquille
Une connexion shell prouve que MySQL est accessible depuis le shell. Seul WordPress peut prouver qu'il est accessible depuis WordPress.
wp db check && wp option get siteurl
Ce que la plateforme prend en charge.
Les identifiants ne dérivent jamais ici, car wp-config.php ne les transporte pas : il les lit depuis l'environnement avec getenv(), donc tourner un mot de passe est un changement en un seul endroit plutôt qu'une modification qui doit être répétée dans un fichier. La base de données fonctionne dans son propre conteneur avec sa propre réserve mémoire, donc un processus PHP occupé ne peut pas la priver, et Fix Site re-pointe un site restauré à la bonne base de données dans une action.
Questions fréquentes.
Pourquoi cela a-t-il commencé seul, sans rien changer ?
Est-ce que ça veut dire que mes données sont parties ?
Dois-je utiliser la page de réparation intégrée?
Le site fonctionne et se casse toutes les quelques minutes.
Si le problème vient d’ailleurs.
Ces erreurs peuvent se présenter de façon similaire dans le navigateur.