Short tip: Nextcloud 31 - Incorrect row format found in your database

After upgrading to Nextcloud 31 I came across the following warning in the admin overview:

1Incorrect row format found in your database. ROW_FORMAT=Dynamic offers the best database performances for Nextcloud. Please update row format on the following list: oc_notes_meta, oc_profile_config, oc_twofactor_providers, oc_comments, oc_circles_remote, oc_accounts_data, oc_polls_share, oc_systemtag, oc_mail_provisionings, oc_calendar_appt_bookings, oc_group_user, oc_notifications_settings, oc_circles_membership, oc_authtoken, oc_vcategory_to_object, oc_direct_edit, oc_file_locks, oc_calendar_resources_md, oc_groups, oc_richdocuments_wopi, oc_whats_new, oc_text_sessions, oc_federated_reshares, oc_cards, oc_polls_notif, oc_polls_votes, oc_talk_rooms, oc_oauth2_clients, oc_flow_checks, oc_mail_tags, oc_login_flow_v2, oc_text_steps, oc_comments_read_markers, oc_polls_comments, oc_vcategory, oc_properties, oc_share, oc_group_admin, oc_circles_share_lock, oc_flow_operations_scope, oc_systemtag_group, oc_appconfig, oc_circles_member, oc_richdocuments_assets, oc_storages, oc_talk_bridges, oc_text_documents, oc_polls_log, oc_addressbookchanges, oc_mail_trusted_senders, oc_cards_properties, oc_polls_options, oc_directlink, oc_mounts, oc_migrations, oc_circles_circle, oc_circles_mountpoint, oc_users, oc_ratelimit_entries, oc_storages_credentials, oc_calendar_resources, oc_bruteforce_attempts, oc_calendarobjects_props, oc_webauthn, oc_mail_coll_addresses, oc_talk_sessions, oc_calendarsubscriptions, oc_recent_contact, oc_flow_operations, oc_mail_classifiers, oc_collres_resources, oc_calendar_rooms, oc_filecache, oc_systemtag_object_mapping, oc_mail_accounts, oc_calendarchanges, oc_filecache_extended, oc_talk_commands, oc_dav_cal_proxy, oc_oauth2_access_tokens, oc_circles_token, oc_mail_recipients, oc_mail_attachments, oc_preferences, oc_calendar_appt_configs, oc_calendar_rooms_md, oc_talk_attendees, oc_calendar_reminders, oc_calendar_invitations, oc_twofactor_backupcodes, oc_mimetypes, oc_known_users, oc_richdocuments_direct, oc_notifications_pushhash, oc_calendars, oc_calendarobjects, oc_jobs, oc_circles_mount, oc_schedulingobjects, oc_talk_internalsignaling, oc_accounts, oc_circles_event, oc_dav_shares, oc_user_transfer_owner, oc_activity, oc_mail_messages, oc_mail_mailboxes, oc_activity_mq, oc_files_trash, oc_mail_message_tags, oc_polls_polls, oc_notifications, oc_collres_accesscache, oc_trusted_servers, oc_collres_collections, oc_polls_preferences, oc_share_external, oc_user_status, oc_authorized_groups, oc_twofactor_totp_secrets, oc_mail_aliases, oc_privacy_admins, oc_addressbooks. Weitere Informationen findest du in der Dokumentation.

The InnoDB storage engine supports various formats used by Nextcloud by default to store row information:

  • REDUNDANT
  • COMPACT
  • DYNAMIC
  • COMPRESSED

REDUNDANT is mainly used where compatibility with older MySQL versions is still required. COMPACT saves approx. 20% memory compared to REDUNDANT, but causes a higher CPU load for some actions. DYNAMIC is similar to COMPACT, but offers extended storage options for long columns with variable length and supports large index key prefixes - Nextcloud requires this format from version 31. Compared to DYNAMIC, COMPRESSED offers support for table and index data compression.

A fix is to execute the following commands against the MariaDB database used:

  1ALTER TABLE oc_notes_meta ROW_FORMAT=Dynamic;
  2ALTER TABLE oc_profile_config ROW_FORMAT=Dynamic;
  3ALTER TABLE oc_twofactor_providers ROW_FORMAT=Dynamic;
  4ALTER TABLE oc_comments ROW_FORMAT=Dynamic;
  5ALTER TABLE oc_circles_remote ROW_FORMAT=Dynamic;
  6ALTER TABLE oc_accounts_data ROW_FORMAT=Dynamic;
  7ALTER TABLE oc_polls_share ROW_FORMAT=Dynamic;
  8ALTER TABLE oc_systemtag ROW_FORMAT=Dynamic;
  9ALTER TABLE oc_mail_provisionings ROW_FORMAT=Dynamic;
 10ALTER TABLE oc_calendar_appt_bookings ROW_FORMAT=Dynamic;
 11ALTER TABLE oc_group_user ROW_FORMAT=Dynamic;
 12ALTER TABLE oc_notifications_settings ROW_FORMAT=Dynamic;
 13ALTER TABLE oc_circles_membership ROW_FORMAT=Dynamic;
 14ALTER TABLE oc_authtoken ROW_FORMAT=Dynamic;
 15ALTER TABLE oc_vcategory_to_object ROW_FORMAT=Dynamic;
 16ALTER TABLE oc_direct_edit ROW_FORMAT=Dynamic;
 17ALTER TABLE oc_file_locks ROW_FORMAT=Dynamic;
 18ALTER TABLE oc_calendar_resources_md ROW_FORMAT=Dynamic;
 19ALTER TABLE oc_groups ROW_FORMAT=Dynamic;
 20ALTER TABLE oc_richdocuments_wopi ROW_FORMAT=Dynamic;
 21ALTER TABLE oc_whats_new ROW_FORMAT=Dynamic;
 22ALTER TABLE oc_text_sessions ROW_FORMAT=Dynamic;
 23ALTER TABLE oc_federated_reshares ROW_FORMAT=Dynamic;
 24ALTER TABLE oc_cards ROW_FORMAT=Dynamic;
 25ALTER TABLE oc_polls_notif ROW_FORMAT=Dynamic;
 26ALTER TABLE oc_polls_votes ROW_FORMAT=Dynamic;
 27ALTER TABLE oc_talk_rooms ROW_FORMAT=Dynamic;
 28ALTER TABLE oc_oauth2_clients ROW_FORMAT=Dynamic;
 29ALTER TABLE oc_flow_checks ROW_FORMAT=Dynamic;
 30ALTER TABLE oc_mail_tags ROW_FORMAT=Dynamic;
 31ALTER TABLE oc_login_flow_v2 ROW_FORMAT=Dynamic;
 32ALTER TABLE oc_text_steps ROW_FORMAT=Dynamic;
 33ALTER TABLE oc_comments_read_markers ROW_FORMAT=Dynamic;
 34ALTER TABLE oc_polls_comments ROW_FORMAT=Dynamic;
 35ALTER TABLE oc_vcategory ROW_FORMAT=Dynamic;
 36ALTER TABLE oc_properties ROW_FORMAT=Dynamic;
 37ALTER TABLE oc_share ROW_FORMAT=Dynamic;
 38ALTER TABLE oc_group_admin ROW_FORMAT=Dynamic;
 39ALTER TABLE oc_circles_share_lock ROW_FORMAT=Dynamic;
 40ALTER TABLE oc_flow_operations_scope ROW_FORMAT=Dynamic;
 41ALTER TABLE oc_systemtag_group ROW_FORMAT=Dynamic;
 42ALTER TABLE oc_appconfig ROW_FORMAT=Dynamic;
 43ALTER TABLE oc_circles_member ROW_FORMAT=Dynamic;
 44ALTER TABLE oc_richdocuments_assets ROW_FORMAT=Dynamic;
 45ALTER TABLE oc_storages ROW_FORMAT=Dynamic;
 46ALTER TABLE oc_talk_bridges ROW_FORMAT=Dynamic;
 47ALTER TABLE oc_text_documents ROW_FORMAT=Dynamic;
 48ALTER TABLE oc_polls_log ROW_FORMAT=Dynamic;
 49ALTER TABLE oc_addressbookchanges ROW_FORMAT=Dynamic;
 50ALTER TABLE oc_mail_trusted_senders ROW_FORMAT=Dynamic;
 51ALTER TABLE oc_cards_properties ROW_FORMAT=Dynamic;
 52ALTER TABLE oc_polls_options ROW_FORMAT=Dynamic;
 53ALTER TABLE oc_directlink ROW_FORMAT=Dynamic;
 54ALTER TABLE oc_mounts ROW_FORMAT=Dynamic;
 55ALTER TABLE oc_migrations ROW_FORMAT=Dynamic;
 56ALTER TABLE oc_circles_circle ROW_FORMAT=Dynamic;
 57ALTER TABLE oc_circles_mountpoint ROW_FORMAT=Dynamic;
 58ALTER TABLE oc_users ROW_FORMAT=Dynamic;
 59ALTER TABLE oc_ratelimit_entries ROW_FORMAT=Dynamic;
 60ALTER TABLE oc_storages_credentials ROW_FORMAT=Dynamic;
 61ALTER TABLE oc_calendar_resources ROW_FORMAT=Dynamic;
 62ALTER TABLE oc_bruteforce_attempts ROW_FORMAT=Dynamic;
 63ALTER TABLE oc_calendarobjects_props ROW_FORMAT=Dynamic;
 64ALTER TABLE oc_webauthn ROW_FORMAT=Dynamic;
 65ALTER TABLE oc_mail_coll_addresses ROW_FORMAT=Dynamic;
 66ALTER TABLE oc_talk_sessions ROW_FORMAT=Dynamic;
 67ALTER TABLE oc_calendarsubscriptions ROW_FORMAT=Dynamic;
 68ALTER TABLE oc_recent_contact ROW_FORMAT=Dynamic;
 69ALTER TABLE oc_flow_operations ROW_FORMAT=Dynamic;
 70ALTER TABLE oc_mail_classifiers ROW_FORMAT=Dynamic;
 71ALTER TABLE oc_collres_resources ROW_FORMAT=Dynamic;
 72ALTER TABLE oc_calendar_rooms ROW_FORMAT=Dynamic;
 73ALTER TABLE oc_filecache ROW_FORMAT=Dynamic;
 74ALTER TABLE oc_systemtag_object_mapping ROW_FORMAT=Dynamic;
 75ALTER TABLE oc_mail_accounts ROW_FORMAT=Dynamic;
 76ALTER TABLE oc_calendarchanges ROW_FORMAT=Dynamic;
 77ALTER TABLE oc_filecache_extended ROW_FORMAT=Dynamic;
 78ALTER TABLE oc_talk_commands ROW_FORMAT=Dynamic;
 79ALTER TABLE oc_dav_cal_proxy ROW_FORMAT=Dynamic;
 80ALTER TABLE oc_oauth2_access_tokens ROW_FORMAT=Dynamic;
 81ALTER TABLE oc_circles_token ROW_FORMAT=Dynamic;
 82ALTER TABLE oc_mail_recipients ROW_FORMAT=Dynamic;
 83ALTER TABLE oc_mail_attachments ROW_FORMAT=Dynamic;
 84ALTER TABLE oc_preferences ROW_FORMAT=Dynamic;
 85ALTER TABLE oc_calendar_appt_configs ROW_FORMAT=Dynamic;
 86ALTER TABLE oc_calendar_rooms_md ROW_FORMAT=Dynamic;
 87ALTER TABLE oc_talk_attendees ROW_FORMAT=Dynamic;
 88ALTER TABLE oc_calendar_reminders ROW_FORMAT=Dynamic;
 89ALTER TABLE oc_calendar_invitations ROW_FORMAT=Dynamic;
 90ALTER TABLE oc_twofactor_backupcodes ROW_FORMAT=Dynamic;
 91ALTER TABLE oc_mimetypes ROW_FORMAT=Dynamic;
 92ALTER TABLE oc_known_users ROW_FORMAT=Dynamic;
 93ALTER TABLE oc_richdocuments_direct ROW_FORMAT=Dynamic;
 94ALTER TABLE oc_notifications_pushhash ROW_FORMAT=Dynamic;
 95ALTER TABLE oc_calendars ROW_FORMAT=Dynamic;
 96ALTER TABLE oc_calendarobjects ROW_FORMAT=Dynamic;
 97ALTER TABLE oc_jobs ROW_FORMAT=Dynamic;
 98ALTER TABLE oc_circles_mount ROW_FORMAT=Dynamic;
 99ALTER TABLE oc_schedulingobjects ROW_FORMAT=Dynamic;
100ALTER TABLE oc_talk_internalsignaling ROW_FORMAT=Dynamic;
101ALTER TABLE oc_accounts ROW_FORMAT=Dynamic;
102ALTER TABLE oc_circles_event ROW_FORMAT=Dynamic;
103ALTER TABLE oc_dav_shares ROW_FORMAT=Dynamic;
104ALTER TABLE oc_user_transfer_owner ROW_FORMAT=Dynamic;
105ALTER TABLE oc_activity ROW_FORMAT=Dynamic;
106ALTER TABLE oc_mail_messages ROW_FORMAT=Dynamic;
107ALTER TABLE oc_mail_mailboxes ROW_FORMAT=Dynamic;
108ALTER TABLE oc_activity_mq ROW_FORMAT=Dynamic;
109ALTER TABLE oc_files_trash ROW_FORMAT=Dynamic;
110ALTER TABLE oc_mail_message_tags ROW_FORMAT=Dynamic;
111ALTER TABLE oc_polls_polls ROW_FORMAT=Dynamic;
112ALTER TABLE oc_notifications ROW_FORMAT=Dynamic;
113ALTER TABLE oc_collres_accesscache ROW_FORMAT=Dynamic;
114ALTER TABLE oc_trusted_servers ROW_FORMAT=Dynamic;
115ALTER TABLE oc_collres_collections ROW_FORMAT=Dynamic;
116ALTER TABLE oc_polls_preferences ROW_FORMAT=Dynamic;
117ALTER TABLE oc_share_external ROW_FORMAT=Dynamic;
118ALTER TABLE oc_user_status ROW_FORMAT=Dynamic;
119ALTER TABLE oc_authorized_groups ROW_FORMAT=Dynamic;
120ALTER TABLE oc_twofactor_totp_secrets ROW_FORMAT=Dynamic;
121ALTER TABLE oc_mail_aliases ROW_FORMAT=Dynamic;
122ALTER TABLE oc_privacy_admins ROW_FORMAT=Dynamic;
123ALTER TABLE oc_addressbooks ROW_FORMAT=Dynamic;

The warning then disappeared:

Disappeared warning in the admin area

Translations: