Si Nextcloud muestra una excepción de "Error de base de datos" después de una actualización, verifique el error subyacente de la base de datos nextcloud.logantes de modificar cualquier tabla. Restablezca primero la conectividad de la base de datos; si la actualización se interrumpió a mitad de camino, finalícela occ upgradey solo entonces utilice los comandos de reparación documentados cuando los registros lo justifiquen.
Identificar el fallo real
El mensaje del navegador es un síntoma, no un diagnóstico. Es posible que Nextcloud no pueda conectarse a MySQL/MariaDB o PostgreSQL, que la cuenta de la base de datos ya no se autentique o que el código y el esquema de la aplicación se encuentren en diferentes fases de actualización. La guía oficial de solución de problemas de Nextcloud recomienda comparar el ID de la solicitud fallida con el registro del servidor.
- Registre la hora, el error completo del navegador y cualquier ID de solicitud que aparezca. No publique registros privados sin eliminar la información confidencial y personal.
- Encuentre el directorio de datos configurado en
config/config.php. El archivo de registro predeterminado es data/nextcloud.log, pero las implementaciones personalizadas pueden registrar en otro lugar.
- En una instalación Linux convencional, revise las entradas recientes y luego los registros del servicio de base de datos. Sustituya la ruta real de Nextcloud:
sudo tail -n 100 /var/www/nextcloud/data/nextcloud.log
sudo journalctl -u mariadb --since '30 minutes ago'
El segundo comando solo se aplica a un host que ejecuta MariaDB bajo systemd; para otras implementaciones, utilice los registros del servicio o contenedor de PostgreSQL. Busque el SQLSTATEcódigo de la excepción y la primera causa relacionada con la base de datos, en lugar de basarse en la última línea del rastreo de la pila.
| Pista de registro | Primera comprobación útil |
SQLSTATE[HY000] [2002] | Proceso de base de datos, nombre de host, puerto, ruta de socket o acceso a archivos SQLite; el controlador determina la interpretación. |
SQLSTATE[HY000] [1040] | Agotamiento de conexiones MySQL/MariaDB y sesiones activas. |
MySQL server has gone away | Reinicios de la base de datos, desconexiones, presión sobre los recursos y registros del servidor. |
| Autenticación o acceso denegado | Cuenta de base de datos, contraseña, acceso a la red y permisos. |
| Tabla, relación o columna faltante | Si la actualización de la base de datos se completó correctamente y si el código instalado coincide con su esquema. |
Los tres primeros ejemplos se tratan en la documentación de errores comunes de Nextcloud. El mensaje "tabla faltante" indica que no hay permiso para crear la tabla manualmente: primero, identifique el error de migración exacto.
Proteja la instancia antes de aplicar una corrección.
Antes de volver a intentar las migraciones, conserve una copia de seguridad restaurable de la base de datos junto con la configuración y los datos de Nextcloud. El procedimiento oficial de copia de seguridad también incluye las aplicaciones y los temas personalizados, si los hay. Confirme que la copia de seguridad corresponde al mismo momento; una copia de seguridad que solo contenga el código no puede recuperar una base de datos parcialmente modificada.
- Pause la sincronización y las tareas en segundo plano durante una ventana de recuperación siempre que sea posible, especialmente cuando se trate de escrituras o actualizaciones de la base de datos.
- Mantenga un registro de las versiones antiguas y nuevas de Nextcloud, el motor/versión de la base de datos, la versión de PHP y el método de actualización.
- No elimine tablas de la base de datos, no importe un esquema en blanco, no ejecute consultas SQL aleatorias de foros ni restaure repetidamente solo un componente de una copia de seguridad de varias partes.
Los comandos que se muestran a continuación presuponen una instalación común de Debian/Ubuntu en /var/www/nextcloud, con www-datacomo cuenta de servidor web. Ejecútelos occcomo el usuario HTTP correspondiente; las instalaciones de paquetes, Docker, Snap, AIO y gestionadas tienen rutas y métodos de ejecución diferentes. La referencia del comando occ explica estos requisitos.
Restablezca la conectividad de la base de datos antes de migrar.
Verifique la configuración del servicio de base de datos y de la conexión a Nextcloud.
Si los registros muestran un rechazo de conexión, un socket inaccesible o un servidor no disponible, primero verifique que el servicio de base de datos existente esté en ejecución. Estas son comprobaciones alternativas a nivel de host, no una lista para ejecutar indiscriminadamente:
sudo systemctl status mariadb
sudo systemctl status postgresql
Para un servidor de base de datos independiente, compruebe también el DNS, las reglas del firewall, el puerto seleccionado y la accesibilidad de la red desde el host o contenedor de la aplicación Nextcloud. Inspeccione config/config.php, dbtype, dbhost, dbnamey dbuser. La referencia de parámetros de configuración explica los nombres de host, los puertos y la sintaxis de los sockets Unix. Nunca pegue dbpassworden tickets públicos ni en comandos de shell que lo expongan en el historial.
Si se rotó la contraseña de la base de datos o se modificaron las credenciales durante la implementación, corrija la discrepancia mediante su flujo de trabajo de gestión de secretos. Si el servidor informa de demasiadas conexiones, inspeccione las conexiones activas y la causa de la acumulación de conexiones antes de considerar cambios en la capacidad. Un comando de indexación no solucionará una interrupción de la conexión.
Compruebe la compatibilidad en tiempo de ejecución después de la actualización.
Una actualización simultánea de PHP o del servidor de base de datos puede dañar una instalación que antes funcionaba correctamente. Compare la versión de Nextcloud que desea actualizar con sus requisitos del sistema y notas de la versión oficiales, en lugar de asumir que todas las versiones de controladores y servidores instaladas actualmente siguen siendo compatibles. Según la documentación de Nextcloud 35, se admiten las versiones PHP 8.3 a 8.5; las versiones de base de datos compatibles se documentan allí por separado. Las versiones anteriores tienen límites diferentes.
Confirme también que el controlador de base de datos PHP requerido por el motor seleccionado esté habilitado tanto en el entorno de línea de comandos como en el entorno web de PHP. No degrade indiscriminadamente el servidor de base de datos después de una migración de esquema: restaure únicamente desde un plan de copia de seguridad compatible y consistente.
Completa o repara la actualización de Nextcloud interrumpida.
Una vez que la base de datos sea accesible y se haya realizado una copia de seguridad, cambie al directorio de instalación de Nextcloud y compruebe su estado:
cd /var/www/nextcloud
sudo -E -u www-data php occ status
Si Nextcloud informa que hay una actualización pendiente o incompleta, siga la ruta de actualización compatible para las versiones de origen y destino instaladas. Para una instalación manual convencional, ejecute:
sudo -E -u www-data php occ upgrade
No interrumpa el comando ni ejecute procesos de actualización simultáneos. Lea su salida: una migración exitosa es diferente de una excepción de conexión a la base de datos. La documentación de actualización manual de Nextcloud recomienda explícitamente occ upgradecuándo se bloquea el proceso web y maintenance:repairsi la ruta de actualización necesita reparación:
sudo -E -u www-data php occ maintenance:repair
Úselo maintenance:repairdespués de analizar el fallo; no sustituye la corrección de credenciales incorrectas, una base de datos detenida o un entorno de ejecución realmente incompatible. Si occ upgradefalla en una migración SQL específica, guarde la excepción exacta y busque una solución específica para la versión o restaure la copia de seguridad completa correspondiente en lugar de experimentar con DDL manual.
Gestione las advertencias de esquema solo después de una actualización exitosa.
Algunas migraciones se posponen intencionalmente. En una instancia en funcionamiento, la vista general de administración puede solicitar columnas, índices o claves primarias opcionales. Estos comandos proporcionan una vista previa de prueba cuando la versión lo admite:
sudo -E -u www-data php occ db:add-missing-indices --dry-run
sudo -E -u www-data php occ db:add-missing-columns --dry-run
sudo -E -u www-data php occ db:add-missing-primary-keys --dry-run
Ejecute el comando correspondiente --dry-runsolo si el problema registrado o la verificación administrativa lo requieren y el cambio propuesto ha sido revisado. Estas operaciones de mantenimiento pueden tardar en bases de datos grandes. Nextcloud 35 documenta adicionalmente esta información db:schema:check; no asuma que existe en versiones anteriores. Consulte la referencia de comandos de la base de datos para conocer el comportamiento específico de la versión.
Verificar la recuperación y reabrir el acceso.
- Repita el procedimiento
sudo -E -u www-data php occ status. Confirme que la versión instalada coincide con la versión prevista, que no se requiere ninguna actualización y que no se produce ninguna excepción SQL fatal nueva.
- Si el modo de mantenimiento sigue activado y la actualización se ha completado correctamente , desactívelo con
sudo -E -u www-data php occ maintenance:mode --off.
- Abra la interfaz web, inicie sesión, liste los archivos y realice una pequeña carga y descarga autorizada.
nextcloud.logDurante estas comprobaciones, observe si se producen nuevas excepciones en la base de datos.
- Reanude las tareas programadas y la sincronización del cliente, y luego revise la configuración de administración para detectar cualquier advertencia restante en la base de datos.
Si se repite la misma excepción de base de datos, detenga las migraciones repetidas y recopile el ID de la solicitud, el texto SQLSTATE, el registro del servidor de base de datos, el par de versiones y la occsalida del error. Esta información permite determinar si el problema restante se debe a la conectividad, a un software incompatible o a una migración específica que falló. Un inicio de sesión exitoso por sí solo no garantiza que todas las tareas en segundo plano y las consultas a la base de datos funcionen correctamente.