--- author: Daniel A. Rodriguez date: 2025-08-09 --- # «Formato de fila incorrecto» tras actualizar a Nextcloud Hub 10 (31.0.0) Después de actualizar a Nextcloud Hub 10 (versión 31.0.0), es posible que aparezca la siguiente advertencia en la sección `Configuraciones de administración > Vista general`: % Algunas tablas de la base de datos no utilizan el formato de fila recomendado «DYNAMIC». Esta guía le ayuda a solucionarlo de manera eficiente utilizando herramientas nativas de MariaDB/MySQL, sin depender de scripts que pueden no funcionar siempre en todos los entornos. ## Paso 1: Nombre de la base de datos Defina el nombre de su base de datos Nextcloud como una variable para poder reutilizarla en todos los comandos: ```bash NOMBRE_DB="nextcloud" ``` Reemplace `nextcloud` por el nombre real de su base de datos. ## Paso 2: Formato de fila actual de las tablas Compruebe qué tablas no utilizan `ROW_FORMAT=DYNAMIC`. ```sql mariadb -e " SELECT table_name, row_format FROM information_schema.tables WHERE table_schema = 'NOMBRE_DB'; " ``` % En versiones anteriores a MariaDB 11.7 utilizar mysql Probablemente verá una mezcla de formatos dinámicos y comprimidos: ```sql +-----------------------------+------------+ | table_name | row_format | +-----------------------------+------------+ | oc_systemtag | Compressed | | oc_twofactor_backupcodes | Compressed | | oc_preferences_ex | Dynamic | ... ``` ## Paso 3: Realice una copia de seguridad de su base de datos Antes de realizar cualquier cambio, cree una copia de seguridad completa de su base de datos Nextcloud. ```sql mariadb-dump NOMBRE_DB > NOMBRE_DB_respaldo.sql ``` % En versiones anteriores a MariaDB 11.7 utilizar mysqldump Asegúrese de probar el proceso de restauración de la copia de seguridad en un entorno de prueba, si es posible. ## Paso 4: Generar sentencias ALTER TABLE Ahora genere una lista de sentencias ALTER TABLE para todas las tablas que aún no estén configuradas como DYNAMIC: ```sql mariadb -s -e " SELECT CONCAT( 'ALTER TABLE \`', TABLE_NAME, '\` ROW_FORMAT=DYNAMIC;' ) AS _alter FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'NOMBRE_DB' AND ENGINE='InnoDB' AND ROW_FORMAT <> 'DYNAMIC'; " > nc_altera_formato_fila_a_dynamic.sql ``` ## Paso 5: Ejecutar las sentencias ALTER Aplique los cambios directamente a la base de datos: ```sql mariadb NOMBRE_DB < nc_altera_formato_fila_a_dynamic.sql ``` (Opcional: registrar la salida para auditoría) ```sql mariadb NOMBRE_DB < nc_altera_formato_fila_a_dynamic.sql | tee alter.log ``` ## Paso 6: Verificar los cambios Confirme que todas las tablas ahora utilizan el formato correcto `ROW_FORMAT=DYNAMIC`: ```sql mariadb -e " SELECT table_name, row_format FROM information_schema.tables WHERE table_schema = 'NOMBRE_DB' AND row_format <> 'DYNAMIC'; " ``` Si no se muestra ninguna fila, ya lo tiene todo listo. ## Por qué ocurre esto Nextcloud 31 esperas `ROW_FORMAT=DYNAMIC` por motivos de compatibilidad y rendimiento, especialmente en InnoDB. Si tu servidor MySQL/MariaDB tiene tablas creadas antes de que eso fuera el valor predeterminado (o utiliza `ROW_FORMAT=Compressed`), aparecerá una advertencia.. * Esta solución solo afecta a las tablas dentro del esquema nextcloud especificado. * Asegúrese de que su configuración de InnoDB admite `ROW_FORMAT=DYNAMIC`. Por lo general, es seguro, pero las versiones anteriores de MariaDB pueden requerir `innodb_file_format = Barracuda`. ## Consideraciones finales Este método es fiable, reproducible y no requiere scripts ni herramientas de terceros. Solo SQL y unos pocos comandos de shell: ideal para administradores de sistemas que gestionan varias instancias de Nextcloud. [PietterBakker.com](https://pieterbakker.com/nextcloud-fix-incorrect-row-format-hub10/)