Erreur sauvegarde mysqldump

Bonjour.
Depuis quelques semaines, je ne peux plus faire de sauvegarde en utilisant l’option par défaut ‹ mysqldump › qui renvoie une erreur.
J’étais en version 12.04 jusqu’à hier, je pensais qu’un mise à jour réglerai le problème… j’ai migré en version 14.0.5, le problème est toujours là.
J’ai donc un message:
« Erreur : Échec de l’exécution de commande externe. Vérifiez qu’elle est disponible et exécutable par l’utilisateur de votre serveur PHP. Vérifiez également que la commande n’est pas protégée au niveau du shell par une couche de sécurité comme apparmor. »
La commande est disponible dans /usr/bin.
Je l’ai lancé depuis un terminal, et il y a un message d’erreur en sortie :
« mysqldump: Couldn’t execute ‹ SELECT COLUMN_NAME, JSON_EXTRACT(HISTOGRAM, ‹ $.« number-of-buckets-specified » ›) FROM information_schema.COLUMN_STATISTICS WHERE SCHEMA_NAME = ‹ 140088_dolibarr › AND TABLE_NAME = ‹ llx_accounting_account ›; ›: Unknown table ‹ COLUMN_STATISTICS › in information_schema (1109) »
Est-ce que quelqu’un peut m’aider à interpréter tout ça et voir comment corriger?
Merci d’avance.

Bonjour @duprat.jf et bienvenue sur le forum

qu’est ce qui s’est passé d’autre ?
tu n’aurais pas mis à jour tout ou partie du système, dont mysql ?
ou est hébergé ton dolibarr ? sur quelle os ? et dans quel version (os/apache/php/mysql) ?

(tu trouveras sans doute une aide plus rapide et efficace sur des forums dédiés car à priori, ça n’a rien à voir avec dolibarr)

Dans un des fichiers /etc/mysql/my.cnf par exemple, il faut ajouter une option à la section [mysqldump]
:

[mysqldump]
column-statistics=0

@libremaster tu vas trop vite :wink: Attend de savoir s’il a maj mysql avant de proposer ça. (bon, ok… pas grands risques à essayer ça^^)

Bonsoir et merci pour vos réponses.
J’ai collecté quelques informations supplémentaires
L’hébergeur est Yulpa, et c’est un hébergement mutualisé (je ne suis pas sur d’avoir la main sur un fichier « /etc/mysql/my.cnf »). Le serveur apache est en version 2.4, la base est 5.5.68-MariaDB-cll-lve - MariaDB Server
Dans Dolibarr j’ai en plus:

  • infos OS : Linux mut-http1-apache01k-fr 4.18.0-147.8.1.el8.lve.1.x86_64 #1 SMP Mon Jun 29 09:55:57 EDT 2020 x86_64
  • infos PHP : 7.4.14
    J’espère que ces informations aideront pour diagnostic et/ou actions et permettront de remettre la sauvegarde en route!
    Bonne soirée

A tout hasard, il faudrait tenter de mettre un fichier « .my.cnf » à la racine du compte

Bonjour,
nous avons eu un problème similaire, il est à présent réglé :

Belle journée.

Bonjour.
J’essaye d’explorer les pistes que vous m’indiquez, merci pour votre aide.
Je n’ai aucune « vue » (enfin je crois car je ne fais aucune action sur la base).
En connexion SSH :

  • j’ai créé un fichier « my.cnf » avec le contenu indiqué par @libremaster
  • j’ai lancé la commande de sauvegarde récupérée dans dolibarr
  • j’ai toujours la même erreur
    Comment savoir si mon « my.cnf » est pris en compte ou non?

Il faut bien lire, j’ai écrit « .my.cnf » et non « my.cnf »

Bonjour
Pour ma part avant tout bricolage… je ferais une sauvegarde de la base avec un autre outil : phpmyadmin ou …
Je dis ça je dis rien…
Francis

En fait, ceci devrait marcher mais j’ai déjà essayé de mettre ça dans dolibarr, il en veut pas :

mysqldump --column-statistics=0

Bonjour à nouveau.

  1. Je fais régulièrement une sauvegarde depuis dolibarr par mysql dump PHP.
  2. En connexion terminal par ssh chez mon hébergeur, j’ai modifié le nom de fichier en « .my.cnf », puis relancé la commande mysqldump « générée » par dolibarr : je n’ai plus le message d’erreur et j’obtiens en sortie un fichier qui semble contenir le vidage de mes tables.
  3. Par contre, j’ai toujours la même erreur depuis l’interface de dolibarr.
    Je pense donc que mon fichier « .my.cnf » est pris en compte lorsque je lance la commande manuellement depuis un terminal, mais pas depuis Dolibarr. Je vais donc demander de l’aide chez mon hébergeur car je pense que ça dépend maintenant de lui. Je completerai le fil dès que j’avance sur le sujet.
    Merci de votre aide.

Bonjour.
Après plusieurs échanges avec mon hébergeur (forum et support) … on me dit qu’aucune modification n’a été faite sur l’environnement mysql depuis fort longtemps. Et je ne dispose d’aucun moyen pour que mon « .my.cnf » soit pris en compte dans l’environnement d’exécution de mon instance Dolibarr.
Donc il me reste à me tourner vers dolibarr directement : est-il possible de modifier la commande lancé pour la sauvegarde et intégrer une clause « column-statistics=0 » qui résoudrait mon problème?
Mais c’est peut-être ce qu’a tenté @Libremaster sans succès?
Jean-François

Il faudrait tester l’option --column-statistics=0 en ligne de commande. Si l’option n’est pas reconnue en ligne de commande, il faut changer d’hébergeur sinon j’ai une solution qui ne demande pas à toucher aux fichiers cœur de Dolibarr.

Je viens de faire le test. La commande fonctionne sans erreur en ajoutant la directive --column-statistics=0!
@libremaster, je suis à l’écoute si tu peux me guider pour une manip assez simple pour faire fonctionner la sauvegarde depuis l’interface Dolibarr …

Étape 1 :

  1. Savoir dans quel répertoire on est mais il faut aller le répertoire qui correspond au htdocs
  2. Ensuite, remettre le droit d’écriture sur le fichier conf/conf.php :

chmod u+w conf/conf.php

  1. Éditer (avec nano s’il est là) le fichier et modifier une ligne (ne mettre aucun espace) :

$dolibarr_main_restrict_os_commands='mysqldump,mysql,pg_dump,pgrestore,mysqldump.sh';

Étape 2 :
Ensuite il faut ajouter un fichier dans un répertoire hors htdocs, dans le répertoire scripts ou équivalent et nommer ce script mysqldump.sh :

#!/bin/sh

/usr/bin/mysqldump --no-column-statistics $@

Le rendre exécutable :

chmod u+x mysqldump.sh

Mémoriser le chemin complet du script :

pwd

On a alors un chemin /home/dsdfsf/scripts/mysqldump.sh

Étape 3 :

  1. Dans dolibarr, aller dans la partie configuration->divers
  2. Ajouter la variable : SYSTEMTOOLS_MYSQLDUMP avec comme valeur le chemin complet jusqu’au script : /home/blabla/scripts/mysqldump.sh et espérer que le chemin est un chemin autorisé par PHP sinon il faut déplacer le script au pire.
  3. Puis normalement, dans la partie sauvegarde de Dolibarr, la commande affichée est le chemin jusqu’au script et en théorie, ça pourrait fonctionner.

Je comprends l’esprit, mais la dernière phrase (« ça pourrait fonctionner ») m’inquiète un peu …
Je teste dans les jours qui viennent et je fais un retour!
Merci

Bonsoir.
J’ai un peu oublié le forum … désolé.
J’ai fait plusieurs sauvegardes après les modifs proposées par @libremaster, ça fonctionne sans erreur.
Il me reste à faire un test de restauration mais il faut que je monte un second environnement et je n’ai pas encore pris le temps.
Je vais marquer le fil résolu.
Merci encore.

A bientôt !

photoeffets.com_