What type of hardware are you using : Old laptop or computer
What YunoHost version are you running : 12.0.14
What app is this about : Nextcloud
Describe your issue
After upgrading Nextcloud from 30.0.9 to 31.0.4 in the admin overview, a warning explain few tables in the mysql database need use a FORMAT=Dynamic.
Après avoir mis à jour Nextcloud 30.0.9 vers 31.0.4 dans la Vue d’ensemble, un avertissement d’utiliser un FORMAT=Dynamic pour de nombreuses tables dans la base de données mysql.
Share relevant logs or error messages
https://paste.yunohost.org/raw/foragafice
I found a solution reading this post
I have the Linuxserver Nextcloud and MariaDB docker containers and today Nextcloud updated to Nextcloud Hub 10 (31.0.0). I am getting error messages: Incorrect row format found in your database. ROW_FORMAT=Dynamic offers the best database...
Reading time: 13 mins 🕑
Likes: 98 ❤
I have edit a file and execute the mysql commands.
First put nextcloud on maintenance mode
yunohost app shell nextcloud
php occ maintenance:mode --on
exit
Then with mysql
mysql -u root
select table_name, row_format from information_schema.tables where table_schema = 'nextcloud';
I could see all the tables needing FORMAT=row
So I use this command, very long edited with a IDE, but another easiest solution as said later in this post is to use a script ( thanks @metyun ) Nextcloud 31.0.4 Incorrect Format ROW_FORMAT=Dynamic - #5 by metyun
USE nextcloud;
ALTER TABLE `oc_storages_credentials` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_ldap_group_mapping` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_preferences` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_calendar_appt_configs` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_activity_mq` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_known_users` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_text_steps` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_file_locks` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_addressbooks` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_circles_mount` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_vcategory` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_circles_membership` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_calendar_invitations` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_flow_checks` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_directlink` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_mounts` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_group_folders_acl` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_group_folders` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_group_folders_manage` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_systemtag` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_notifications_pushhash` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_calendar_resources` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_schedulingobjects` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_share_external` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_authorized_groups` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_calendarchanges` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_users` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_collres_collections` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_comments_read_markers` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_filecache` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_circles_circle` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_jobs` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_login_flow_v2` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_calendar_rooms` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_calendarobjects` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_share` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_calendar_reminders` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_group_admin` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_dav_cal_proxy` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_profile_config` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_group_user` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_ratelimit_entries` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_twofactor_backupcodes` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_calendar_rooms_md` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_whats_new` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_user_transfer_owner` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_circles_member` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_text_sessions` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_text_documents` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_collres_accesscache` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_user_status` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_calendarsubscriptions` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_flow_operations_scope` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_group_folders_groups` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_oauth2_access_tokens` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_files_trash` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_systemtag_object_mapping` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_circles_mountpoint` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_dav_shares` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_external_options` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_calendar_appt_bookings` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_calendarobjects_props` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_mimetypes` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_migrations` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_notifications_settings` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_direct_edit` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_properties` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_circles_remote` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_ldap_user_mapping` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_oauth2_clients` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_bruteforce_attempts` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_filecache_extended` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_recent_contact` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_privacy_admins` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_trusted_servers` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_cards_properties` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_vcategory_to_object` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_appconfig` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_circles_share_lock` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_circles_token` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_group_folders_trash` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_calendar_resources_md` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_accounts_data` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_circles_event` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_external_applicable` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_collres_resources` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_notifications` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_flow_operations` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_webauthn` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_twofactor_providers` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_cards` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_groups` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_authtoken` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_storages` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_calendars` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_external_mounts` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_accounts` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_comments` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_notes_meta` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_systemtag_group` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_activity` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_federated_reshares` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_external_config` ROW_FORMAT = DYNAMIC; ALTER TABLE `oc_addressbookchanges` ROW_FORMAT = DYNAMIC;
Then quit the maintenance mode
yunohost app shell nextcloud
php occ maintenance:mode --off
exit
It’s OK
3 Likes
Perhaps a script could do the job adapted from this one ?
Hello, Your script changes the ROW_FORMAT of the InnoDB tables to DYNAMIC, but it has a problem: it generates the queries in a first mysql -e and then executes them separately in a loop, which can be problematic if the password is asked for each...
1 Like
Certaines applications ne sont pas compatibles avec Nextcloud 31.0.4
ERROR - Impossible de mettre à jour nextcloud
2025-04-18 00:26:45,260: ERROR - Impossible de mettre à jour nextcloud : Une erreur s’est produite durant l’exécution du script de mise à niveau de l’application : The following apps are not (yet?) compatible with Nextcloud 31. You should make sure to upgrade the app, or disable it, or wait for it to become compatible before running this upgrade : login_notes
metyun
April 19, 2025, 9:53am
5
I didn’t find this topic yesterday when i upgraded nextcloud but i read the same post and i’ve adapted the script to be compatible with yunohost :
#!/bin/bash
password=$(grep db_pwd /etc/yunohost/apps/nextcloud/settings.yml | awk '{print $2}')
mysql -u nextcloud -p"$password" nextcloud -Bse "
SELECT CONCAT('ALTER TABLE \`', TABLE_NAME, '\` ROW_FORMAT=DYNAMIC;')
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'nextcloud'
AND ENGINE = 'InnoDB'
" | mysql -u nextcloud -p"$password" nextcloud
I use root user to execute it to be able to read /etc/yunohost/apps/nextcloud/settings.yml and i put nextcloud in maintenance mode like you.
3 Likes
ppr
April 19, 2025, 7:35pm
6
Many thanks, i’ve solved theses warnings !
If it could helps, i had to add these lines to solves all the warnings i have :
Summary
ALTER TABLE oc_ocsms_sendmessage_queue
ROW_FORMAT = DYNAMIC; ALTER TABLE oc_music_albums
ROW_FORMAT = DYNAMIC; ALTER TABLE oc_music_ampache_sessions
ROW_FORMAT = DYNAMIC; ALTER TABLE oc_talk_bridges
ROW_FORMAT = DYNAMIC; ALTER TABLE oc_music_bookmarks
ROW_FORMAT = DYNAMIC; ALTER TABLE oc_ocsms_conversation_read_states
ROW_FORMAT = DYNAMIC; ALTER TABLE oc_music_radio_stations
ROW_FORMAT = DYNAMIC; ALTER TABLE oc_talk_commands
ROW_FORMAT = DYNAMIC; ALTER TABLE oc_music_podcast_channels
ROW_FORMAT = DYNAMIC; ALTER TABLE oc_ocsms_user_datas
ROW_FORMAT = DYNAMIC; ALTER TABLE oc_talk_internalsignaling
ROW_FORMAT = DYNAMIC; ALTER TABLE oc_talk_attendees
ROW_FORMAT = DYNAMIC; ALTER TABLE oc_music_artists
ROW_FORMAT = DYNAMIC; ALTER TABLE oc_music_genres
ROW_FORMAT = DYNAMIC; ALTER TABLE oc_music_tracks
ROW_FORMAT = DYNAMIC; ALTER TABLE oc_music_cache
ROW_FORMAT = DYNAMIC; ALTER TABLE oc_music_ampache_users
ROW_FORMAT = DYNAMIC; ALTER TABLE oc_music_playlists
ROW_FORMAT = DYNAMIC; ALTER TABLE oc_ocsms_config
ROW_FORMAT = DYNAMIC; ALTER TABLE oc_ocsms_smsdatas
ROW_FORMAT = DYNAMIC; ALTER TABLE oc_music_podcast_episodes
ROW_FORMAT = DYNAMIC; ALTER TABLE oc_talk_sessions
ROW_FORMAT = DYNAMIC; ALTER TABLE oc_talk_rooms
ROW_FORMAT = DYNAMIC;
ppr