Problème de fichier dump vide

Bonjour,

Dans le cadre d’un changement de serveur toujours j’ai un problème de DUMP SQL, je m’explique.

J’ai un serveur principale avec une application de production dessus et sa base de données.
Sur le site de la société il y a un autre poste informatique avec une autre application et sa propre base de données.

La logique était que le serveur principale avec l’application se connecte au poste informatique pour effectuer un dump afin d’y récupérer les ventes du jours.

Donc j’ai le script ci-dessous qui doit faire le travail

mysqldump -h IP-DE-LA-MACHINE -u USER -pPASSWORD nom_de_ma_BDD nom_de_la_table_a_ramener > dump_bdd_poste_utilisateur.sql
mysql -h MA_BASE_LOCAL -u USER -pMOT_DE_PASSE nom_de_ma_BDD < dump_bdd_poste_utilisateur.sql

Problème mon fichier dump généré est vide et contient seulement

-- MySQL dump 10.16 Distrib 10.1.38-MariaDB, for debian-linux-gnu (x86_64)
--
-- Host: 192.168.59.222 Database: NOM BASE DE DONNEE
-- Server version 5.1.37-community-log
**/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */** ;
**/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */** ;
**/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */** ;
**/*!40101 SET NAMES utf8mb4 */** ;
**/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */** ;
**/*!40103 SET TIME_ZONE='+00:00' */** ;
**/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */** ;
**/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */** ;
**/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */** ;
**/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */** ;

Or je n’ai pas de problème pour accéder à mon poste utilisateur depuis le serveur à l’aide des connexion SQL classique en ligne de commande.

Mon serveur utilise mysql/mariaDB, l’autre poste est sous EasyPHP avec Mysql

mysqldump -h IP-DE-LA-MACHINE -u USER -pPASSWORD nom_de_ma_BDD nom_de_la_table_a_ramener

Est-ce que USER a bien les droits pour se connecter à la base de données depuis un autre hôte que localhost ?

Oui cela fonctionnait avant sans problème.
Le paramètre renseigné est % et le root est en localhost sur la base de données
Et rien n’a été modifié sur me poste utilisateur avec la seconde base

De plus j’y accède bien en me connectant en ligne de commande depuis mon serveur pour lister les tables ou le contenu de ses dernières

Tu y accèdes comment?
Est-ce que ceci fonctionne ?

mysql  -h IP-DE-LA-MACHINE -u USER -pPASSWORD nom_de_ma_BDD

Et le dump sur la sortie standard ?

mysqldump -h IP-DE-LA-MACHINE -u USER -pPASSWORD nom_de_ma_BDD nom_de_la_table_a_ramener

J’y accède depuis un script bash

Pour en ligne de commande depuis mon serveur

mysql  -h IP-DE-LA-MACHINE -u USER -pPASSWORD nom_de_ma_BDD

Fonction OK

L’autre fonction toujours en ligne de commande

mysqldump -h IP-DE-LA-MACHINE -u USER -pPASSWORD nom_de_ma_BDD nom_de_la_table_a_ramener

Me renvoie un fichier vide avec juste les en-tête cité au dessus.
C’est comme si mysql dump n’était pas activé sur mon serveur non ?

mysqldump fonctionne sinon tu aurais une erreur.
Ce serait bien que tu donnes le retour complet de la commande (sans la redirection dans un fichier) :

mysqldump -h IP-DE-LA-MACHINE -u USER -pPASSWORD nom_de_ma_BDD nom_de_la_table_a_ramener

Oui ça donne ça

-- MySQL dump 10.16  Distrib 10.1.38-MariaDB, for debian-linux-gnu (x86_64)
-- Host: 192.168.59.222    Database: sygecar
-- ------------------------------------------------------
-- Server version       5.1.37-community-log

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

C’est vraiment tout ?
Il n’y a pas une ligne du type :
-- Dump completed on…
ou :
mysqldump: …

Oui c’est tous malheureusement :confused:

48

Curieux…
D’après ce que je vois le serveur utilise mariadb 10.1 et le client mysql 5.1.37. Est-ce exact ?

Dans ce cas il doit y avoir des incompatibilités. je vois notamment un jeu de caractères utf8mb4 qui nécessite mysql 5.1.47 au minimum

À voir avec :
mysqldump --skip-set-charset

Oui c’est exact.
Pourtant je ne comprends pas j’ai fait un apt-get Install mysql
Je viens d’essayer et c’est la même chose.
Qu’elle autre solution il y aurait ?

Je suis pas dans la crotte si jamais :sob::scream:

Il faut installer une version plus récente de MySQL sur le poste que tu essaie d’atteindre. Mais je ne peux pas t’aider car je ne connais pas EasyPhp.
Ou alors tu essaies d’autres options de mysqldump (–set-charset utf8, --compatible=mysql40 ou autres, voir man mysqlump)

1 J'aime

Autre solution de contournement, si le dump fait en local (donc avec le client mysql du 2e serveur) est correct: dans le script, remplacer le dump de la base distante par:

  • une connexion SSH au serveur 2
  • en paramètre, la commande qui doit effectuer le dump en local
  • puis rapatriement (scp, rsync ou autre) du dump sur le serveur 1
1 J'aime

Bonjour

–set-charset utf8

à fonctionné mon fichier dump contient bien les infos des tables exportés.

Merci