Objet : Pour les administrateurs de serveurs de listes utilisant le logiciel Sympa
Archives de la liste
- From: Florin Grosu <adresse@cachée>
- To: adresse@cachée
- Subject: Re: [sympa-fr] Erreur lors du upgrade
- Date: Tue, 01 Mar 2011 16:18:51 +0100
Bonjour, J'ai rencontré une erreur similaire lorsque j'ai lancé une deuxième fois sympa.pl --upgrade. La première fois, sympa avait déjà modifié la bd. Précision: c'était une machine de test, j'ai pu reproduire l'erreur plusieurs fois... Voici ce que je me suis noté à l'époque: --- Si doublons dans la base de données, lors du lancement de l'upgrade, il faut: # mysql -u root -p# CREATE TABLE truc AS SELECT DISTINCT * FROM subscriber_table GROUP BY list_subscriber,user_subscriber; // ceci crée la table truc et insère les enregistrements uniques de la table subscriber_table // (autrement dit, on élimine les doublons) # DELETE FROM subscriber_table; // suppression des enregistrement # INSERT INTO subscriber_table SELECT * FROM truc; // copie les enregistrements sans les doublons // ou encore: # ALTER IGNORE TABLE subscriber_table ADD UNIQUE INDEX(list_subscriber,user_subscriber); Pour refaire l'upgrade, modifier dans le fichier ci-dessous la version (4.1.5) # vim /etc/sympa/data_structure.versionEnsuite lancer la migration # /var/lib/sympa/bin/sympa.pl --upgrade--- Je pense que ça doit marcher également si on ré-copie la bd. Cordialement, Florin Grosu On 02/16/2011 06:49 PM, TDE wrote: Bonjour, Lors du upgrade, au moment de la mise à jour de la base (" Updating the new robot_subscriber and robot_admin Db fields..."), j'ai une erreur SQL : DBD::mysql::db do failed: Duplicate entry 'xxx' for key 'PRIMARY' at /mail/sympa_ldif/bin/Upgrade.pm line 237. err Upgrade::upgrade() Unable to execute SQL statement "UPDATE subscriber_table SET robot_subscriber='xxxx' WHERE (list_subscriber='xxxx')" : Duplicate entry 'xxx' Cela se produit lorsque l'on a comme entrée : (1) robot1 => liste1 => user
toto
or la clé primaire est {robot1,liste1,user} pour la table
subscriber_table(2) robot2 => liste1 => user toto En ligne 237, nous avons : my $statement = sprintf "UPDATE
%s_table SET robot_%s=%s WHERE (list_%s=%s)",
je ne vois pas trop à quoi ça sert car le champs robot_subscriber
est correctement remplis (j'avais supprimé auparavant dans mon
dump bdd avant, tous les INSERT INTO sans de robot définis)<=> UPDATE subscriber_table SET robot_subscriber=robot2 WHERE (list_subscriber=liste1) mais on vois bien que le update va rentrer en conflit avec l'entrée (2) J'ai changé le WHERE en rajoutant la condition de faire le UPDATE si robot_subscriber est vide mais je ne sais pas si c'est cela peut provoquer des pb futurs. Merci de vos retours. Thibaut de Dompsure |
-
Re: [sympa-fr] Erreur lors du upgrade,
Serge Aumont, 01/03/2011
- <Suite(s) possible(s)>
- Re: [sympa-fr] Erreur lors du upgrade, Florin Grosu, 01/03/2011
Archives gérées par MHonArc 2.6.19+.