Demande #6423
ferméDemande #6409: Migrer l'infra en Bookworm
Migrer agir sur Bookworm
100%
Mis à jour par François Poulain il y a 6 mois
- Statut changé de Nouveau à En cours de traitement
D'après Quentin le paquet redmine a été cassé lors de l'install.
Effectivement le log mentionnait une erreur de migration dans les post install.
J'ai peiné, malgré le soutien d'echarp, pour faire fonctionner Bundle.
Mais en fait ça n'est pas utile. En fouillant ya un bin dans le dossier de redmine et on a un bin/rake qui fonctionne.
(j'ignore pk bundle ne fonctionne pas mais il ne va pas m'être nécessaire tout de suite)
Je rejoue la migration et je rejoue bien l'erreur :
# ./bin/rake db:migrate == 20190510070108 AddUniqueIdToImportItems: migrating ========================= -- change_table(:import_items) rake aborted! StandardError: An error has occurred, all later migrations canceled: Mysql2::Error: Duplicate column name 'unique_id'
Lisant le code de la migration et étudiant le schéma de la db, je me convainc que, pour une raison incomprise, la colonne unique_id est en trop. La table étant vide de données, je dégage la colonne :
MariaDB [redmine]> ALTER TABLE import_items DROP unique_id;
Je rejoue la migration. J'ai une nouvelle erreur sur la même migration :
== 20190510070108 AddUniqueIdToImportItems: migrating ========================= -- change_table(:import_items) rake aborted! StandardError: An error has occurred, all later migrations canceled: Mysql2::Error: Index column size too large. The maximum column size is 767 bytes
Après recherche je tombe sur la recommandation de passer le InnoDB Row Formats à « Dynamic ». Je lis la doc et ça semble raisonnable. J'essaie pour la table :
MariaDB [redmine]> ALTER TABLE import_items DROP unique_id; MariaDB [redmine]> ALTER TABLE import_items ROW_FORMAT=DYNAMIC;
Puis je rejoue les migrations :
(April) root@agir:/usr/share/redmine# ./bin/rake db:migrate == 20190510070108 AddUniqueIdToImportItems: migrating ========================= -- change_table(:import_items) -> 0.3159s == 20190510070108 AddUniqueIdToImportItems: migrated (0.3161s) ================ == 20190620135549 ChangeRolesNameLimit: migrating ============================= -- change_column(:roles, :name, :string, {:limit=>255, :default=>""}) -> 0.1822s == 20190620135549 ChangeRolesNameLimit: migrated (0.1825s) ==================== == 20200826153401 AddTwofaSchemeToUser: migrating ============================= -- add_column(:users, :twofa_scheme, :string) -> 0.6474s == 20200826153401 AddTwofaSchemeToUser: migrated (0.6477s) ==================== == 20200826153402 AddTotpToUser: migrating ==================================== -- add_column(:users, :twofa_totp_key, :string) -> 0.3743s -- add_column(:users, :twofa_totp_last_used_at, :integer) -> 0.1999s == 20200826153402 AddTotpToUser: migrated (0.5745s) =========================== == 20210704125704 AddTwofaRequiredToGroups: migrating ========================= -- add_column(:users, :twofa_required, :boolean, {:default=>false}) -> 0.2392s == 20210704125704 AddTwofaRequiredToGroups: migrated (0.2393s) ================ == 20210705111300 AddProjectsDefaultIssueQueryId: migrating =================== -- add_column(:projects, :default_issue_query_id, :integer, {:default=>nil}) -> 0.3391s == 20210705111300 AddProjectsDefaultIssueQueryId: migrated (0.3392s) ========== == 20210728131544 DropIsInChlogColumn: migrating ============================== -- remove_column(:trackers, :is_in_chlog) -> 0.7883s == 20210728131544 DropIsInChlogColumn: migrated (0.7884s) ===================== == 20210801145548 RemoveBccRecipientsSetting: migrating ======================= == 20210801145548 RemoveBccRecipientsSetting: migrated (0.0243s) ============== == 20210801211024 RemoveOrphanedUserCustomValues: migrating =================== == 20210801211024 RemoveOrphanedUserCustomValues: migrated (0.0039s) ========== == 20211213122100 RemoveIdentityUrlFromUsers: migrating ======================= -- remove_column(:users, :identity_url, :string) -> 0.1954s == 20211213122100 RemoveIdentityUrlFromUsers: migrated (0.1955s) ============== == 20211213122101 DropOpenIdAuthenticationTables: migrating =================== -- drop_table(:open_id_authentication_associations) -> 0.1182s -- drop_table(:open_id_authentication_nonces) -> 0.1070s == 20211213122101 DropOpenIdAuthenticationTables: migrated (0.2254s) ========== == 20211213122102 RemoveOpenIdSetting: migrating ============================== == 20211213122102 RemoveOpenIdSetting: migrated (0.0077s) ===================== == 20220224194639 DeleteOrphanedTimeEntryActivities: migrating ================ == 20220224194639 DeleteOrphanedTimeEntryActivities: migrated (0.0469s) =======
Youpi.
D'après https://mariadb.com/kb/en/innodb-system-variables/#innodb_default_row_format dynamic devrait être le format par défaut. Hors la plupart des tables sont au format compact. C'est probablement lié à l'âge vénérable de notre Redmine, qui aura connu du pg, du my, et du mariadb.
Suggestion: migrer toutes les tables en dynamic pour éviter les futurs soucis de même nature.
Mis à jour par François Poulain il y a 6 mois
Ça ne concerne que les tables Redmine, d'ailleurs.
MariaDB [(none)]> SELECT TABLE_NAME FROM information_schema.tables where ROW_FORMAT != "Dynamic" and TABLE_SCHEMA = "redmine"; +---------------------------+ | TABLE_NAME | +---------------------------+ | groups_users | | projects_trackers | | user_preferences_VIDE | | trackers | | issue_statuses | | journal_details | | custom_fields | | wiki_contents_VIDE | | custom_fields_roles | | members | | schema_migrations | | changesets_issues | | permissions_roles | | permissions | | versions | | documents | | messages | | watchers | | wiki_content_versions | | email_addresses | | member_roles | | custom_fields_trackers | | auth_sources | | workflows | | wiki_redirects | | user_preferences | | repositories | | news | | custom_values | | wiki_pages | | boards | | wikis_VIDE | | tokens | | issue_categories | | roles_managed_roles | | enabled_modules | | enumerations | | wiki_pages_VIDE | | wiki_contents | | issue_relations | | wikis | | changes | | journals | | custom_fields_projects | | queries | | comments_VIDE | | imports | | issues | | roles | | queries_roles | | settings | | comments | | changeset_parents | | custom_field_enumerations | +---------------------------+
Je n'ai pas trouvé comment changer ça en masse dans MAriadb, donc je fais avec un oneliner shell :
$ for table in $(mariadb -e 'SELECT TABLE_NAME FROM information_schema.tables where ROW_FORMAT != "Dynamic" and TABLE_SCHEMA = "redmine";' -B | tail -n +2); do mariadb redmine -e "ALTER TABLE $table ROW_FORMAT=DYNAMIC;"; done
Et à la fin :
MariaDB [(none)]> SELECT TABLE_NAME FROM information_schema.tables where ROW_FORMAT != "Dynamic" and TABLE_SCHEMA = "redmine"; Empty set (1.690 sec)
Mis à jour par François Poulain il y a 6 mois
Je fini la migration de la vm avec apt autoremove, apt clean, une purge et un reboot.
Mis à jour par François Poulain il y a 6 mois
J'imagine que cette configuration soit être également manquante sur plusieurs autres tables Mariadb dans l'infra.
Mis à jour par François Poulain il y a 6 mois
- Statut changé de En cours de traitement à Résolu
- % réalisé changé de 90 à 100