Error estableciendo una conexión de base de datos
WordPress cargado, leer wp-config.php, y no pudo obtener una respuesta de MySQL. Cada página en el sitio está en blanco hasta que pueda.
Error establishing a database connection
Nueve veces en diez las credenciales en wp-config.php ya no coinciden con la base de datos. Confirme con una conexión directa usando exactamente esos cuatro valores; si eso se conecta, el problema no es las credenciales y la siguiente sección le dice dónde buscar en su lugar.
Las causas más probables primero.
Revisa la lista en orden. Cada comprobación permite confirmar o descartar una causa antes de hacer cambios: las soluciones son distintas y adivinar cuesta más que ejecutar un comando.
| Causa | Cómo comprobarlo | Solución |
|---|---|---|
| credenciales incorrectas en wp-config.php | Conectar a mano con los mismos cuatro valores wp-config.php utiliza. Si eso falla con "Access denied", el archivo es el problema y nada más necesita pruebas. | DB_NAME, DB_USER, DB_PASSWORD y DB_HOST. Una migración es la razón habitual por la que se desvían: el archivo trajo los valores del antiguo anfitrión con él. |
| El servidor de bases de datos no está funcionando | La misma conexión directa falla con "No se puede conectar" en lugar de "Access denied". La distinción entre esos dos mensajes es todo el diagnóstico. | Inicio MySQL. Si no se mantendrá en pie, su propio registro de errores nombra la razón, y en el alojamiento compartido que la razón es generalmente la memoria. |
| La base de datos alcanzó su límite de conexión | El error es intermitente - el sitio funciona, entonces no, entonces lo hace. Una conexión directa tiene éxito mientras los visitantes todavía están viendo el error. | Elevar max_connections, o encontrar lo que está manteniendo conexiones abiertas. Un plugin que abre una conexión por petición y nunca cerrar es el culpable común. |
| Una mesa corrupta | Sólo algunas páginas fallan, o cargas wp-admin mientras que el extremo frontal no. WordPress puede ofrecer un enlace de reparación en lugar de este error. | Ejecutar una reparación. Establecer WP_ALLOW_REPAIR en wp-config.php, visite /wp-admin/maint/repair.php, luego retire la constante - que página no tiene autenticación. |
| DB_HOST nombra algo inalcable | Las credenciales son correctas y MySQL está levantado, pero el host en wp-config.php no resuelve desde el servidor web. | Usa el nombre de host que el servidor web puede llegar. En las pilas containerizzate que es un nombre de servicio, no localhost, y localhost es lo que contienen la mayoría de los configs migrados. |
Solución paso a paso.
Los comandos requieren WP-CLI y acceso a la consola. Si no los tienes, cada paso explica cómo hacer lo mismo desde el panel o por SFTP.
Lea lo que wp-config.php dice en realidad
No es lo que recuerdas establecer, las cuatro constantes que importan están cerca de la parte superior del archivo.
grep -E "DB_(NAME|USER|PASSWORD|HOST)" wp-config.php
Prueba esos valores exactos contra MySQL
Esta es la prueba que divide el problema en dos. "Access denied" significa que las credenciales están equivocadas; "No se puede conectar" significa que el servidor no está respondiendo.
mysql --user='DB_USER' --password='DB_PASSWORD' --host='DB_HOST' 'DB_NAME' -e 'SELECT 1;'
Si las credenciales estaban equivocadas, corrígelas
Editar wp-config.php, o establecerlos con WP-CLI para que no tenga que encontrar las citas correctas usted mismo.
wp config set DB_PASSWORD 'the-real-password' wp db check
Si el servidor estaba abajo, mira por qué antes de reiniciarlo
Un MySQL que murió una vez morirá de nuevo. Su registro de errores nombra la razón, y fuera de memoria es la respuesta más común en un pequeño servidor.
tail -n 50 /var/log/mysql/error.log
Confirmación de WordPress, no de la cáscara
Una conexión de shell demuestra que MySQL es accesible desde la cáscara. Sólo WordPress puede probar que es accesible desde WordPress.
wp db check && wp option get siteurl
De esto se encarga la plataforma.
Las credenciales nunca se derivan aquí, porque wp-config.php no las lleva: las lee del medio ambiente con getenv(), por lo que rotar una contraseña es un cambio en un lugar en lugar de una edición que tiene que repetirse en un archivo. La base de datos se ejecuta en su propio contenedor con su propio margen de memoria, por lo que un proceso PHP ocupado no puede morir de hambre, y fijar sitio re-punte un sitio restaurado en la base de una sola acción.
Preguntas frecuentes.
¿Por qué empezó esto por sí solo, sin nada cambió?
¿Significa que mis datos se han ido?
¿Debería usar la página de reparación incorporada?
El sitio funciona y luego se rompe cada pocos minutos. ¿Qué es eso?
Si el problema era otro.
Estos errores pueden parecerse en el navegador.