JeromeDevome / GRR

GRR Officiel - Copyright Team DEVOME
https://grr.devome.com
GNU General Public License v2.0
81 stars 51 forks source link

Mise à jour de GRR 3.4.0 vers 3.4.3 puis 3.5. Message "Erreur de modification de la base" #273

Closed nicolasgoudard closed 11 months ago

nicolasgoudard commented 1 year ago

Bonjour, J'avais installé GRR 3.4.0 au départ puis j'ai migré sans problème à la version 3.4.3. il y a une erreur dans la mise à jour de la base de données quand on passe de la version 3.4.3 à 3.5 dans mon cas

message "Erreur de modification de la base"

En analysant le code et ma base de données je me suis rendu compte que le message provient de la ligne 72 du fichier admin/ISO_to_UTF8.inc.php De plus j'ai pu comprendre que ma table participants ne correspond pas à la structure définie à la ligne 930 du fichier admin_maj.php : $result_inter .= traiteRequete("CREATE TABLE IF NOT EXISTS ".TABLE_PREFIX."_participants (idresa int(11) NOT NULL, participant varchar(200) NOT NULL, PRIMARY KEY (idresa,participant));");

En effet dans ma base de donnée il existe déjà une table "participants" depuis l'installation de la version 3.4.0. Elle a la structure suivante

CREATE TABLE `grr_participants` (
  `id_participation` int(11) NOT NULL AUTO_INCREMENT,
  `idresa` int(11) NOT NULL,
  `timestamp` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  `cree_par` varchar(184) NOT NULL,
  `beneficiaire` varchar(184) NOT NULL,
  `beneficiaire_ext` varchar(184) NOT NULL,
  `moderation` tinyint(1) NOT NULL DEFAULT 0,
  PRIMARY KEY (`idresa`,`beneficiaire`),
  UNIQUE KEY `UNIQUE` (`id_participation`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

J'ai donc supposé qu'il fallait renommer le champ beneficiaire en participant, remplacer la longueur par la valeur 200 et modifier la clé primaire.

Cette modification manuelle m'a permis passer la mise à jour.

Dans le code source, il manque donc une condition "if / else" qui exécute un ALTER TABLE dans le cas où la table existerait déjà, pour renommer le champ et supprimer les champs inutiles.

Cordialement

ynaessens commented 1 year ago

Bonjour, je pense que vous avez récupéré un code de développement car la fonctionnalité participant n'apparaît que sur la version 4, puis est rétroportée sur la version 3.4.3. Dans le cadre d'une suite de mises à jour 3.4.0 -> 3.4.3 -> 3.5.x vous ne devriez pas avoir cette erreur. Cordialement, YN