mysqldump pour plusieurs tables

Eléphant du PHP | 81 Messages

04 août 2012, 18:01

bonjour

Je veux sauvegarder plusieurs tables MySql en utilisant mysqldump en Php.

Quand je fais :

Code : Tout sélectionner

mysqldump –host=myhost --user=moimeme --password=rintintin --tables tab1 tab2 > fichier_dump.sql
je n’obtiens rien.

Mais j’obtiens bien la liste de ces tables, tab1, tab2, … avec un SHOW TABLES, donc elles existent dans cette base.

Merci par avance de votre aide.

Francois

ViPHP
xTG
ViPHP | 7331 Messages

04 août 2012, 18:13

Il manque une information dans cette commande.
Tu as l'host, les identifiants mais pas la base de données. ;)

Eléphant du PHP | 81 Messages

04 août 2012, 20:49

Dans ce que je trouvais dans les forums, un coup il y avait la base, un coup elle n'y était pas.

Je l'ai ajoutée:

Code : Tout sélectionner

system("mysqldump --host=".$siteServeur." --user=".$siteNom." --password=".$sitePasse." ".$siteBase." --tables phpbb_forums phpbb_log > tables.sql");
en faisant mon test avec deux tables, sans résultat positif.

Francois

ViPHP
ViPHP | 2287 Messages

07 août 2012, 15:19

Il faudrait d'abord t'assurer du bon fonctionnement de la commande en interactif avant d'essayer en php, avec des variables partout, dont tu n'es pas sûr qu'elles contiennent des valeurs correctes... Ainsi tu pourras bénéficier d'éventuels messages d'erreur.
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphant du PHP | 81 Messages

08 août 2012, 11:42

bonjour

Ma ligne de commande peut paraître difficile mais j'en ai recopié l'essentiel d'un mysqldump qui fonctionne pour sauvegarder toute la base.

Comment tester ma commande en interactif? Mon PC est en Windows, pas en Linux.

Je teste effectivement en interactif mes requêtes Sql mais je n'ai pas l'impression que mysqldump fonctionne en PhpMyAdmin.

Merci de ton aide.

Francois

ViPHP
xTG
ViPHP | 7331 Messages

08 août 2012, 12:51

Ton serveur MySQL est bien installé sur ton poste windows ou sur un serveur distant ?
1er cas > MySQL donne les mêmes commandes sous linux que sous windows en console
2eme cas > tu te connectes en ssh sur le serveur distant et tu exécutes la commande

Eléphant du PHP | 81 Messages

08 août 2012, 13:52

bonjour

J'utilise un serveur Sql installé chez mon hébergeur.

Comme j'ignore tout de Linux, où trouver qqes infos pour que je puisse me connecter en ssh?

Francois

ViPHP
xTG
ViPHP | 7331 Messages

08 août 2012, 16:11

C'est un serveur dédié ? Si cela n'en est pas un pas la peine de chercher tu ne trouveras pas.
Si c'est un serveur mutualisé ou virtualisé mais dont tu n'as pas la main il faudra aussi penser à regarder que tu as les droits pour exécuter une commande via system() (souvent tout appel système est désactivé et donc ton script PHP ne ferra rien).

Si c'est bien un serveur sur lequel tu as pleinement la main tu trouveras ton bonheur en chercher sur ton moteur de recherche préféré le terme "SSH". Ce n'est pas les clients qui manquent...

Eléphant du PHP | 81 Messages

09 août 2012, 11:51

bonjour

Mon hébergement est mutualisé.

Par ailleurs, j'utilise régulièrement system("mysqldump .... pour faire une sauvegarde de la base.

Mon problème ici est avec la syntaxe Sql pour sauvegarder uniquement plusieurs tables de cette base.

Francois

ViPHP
xTG
ViPHP | 7331 Messages

09 août 2012, 12:59

Ce serais pas simplement un souci de direction du dump ?
tables.sql va être créé à l'endroit où la console pointe or ce n'est pas forcement là où se trouve ton script PHP...
Ne se retrouverai-t-il pas dans un dossier auquel tu n'ai pas accès ?
Ou tout simplement la commande n'aboutie pas, vérifies son retour (voir la doc de la fonction system pour ça).

Eléphant du PHP | 81 Messages

09 août 2012, 14:06

Non, j'ai bien un fichier tables.sql mais il est vide en dehors des 7-8 lignes d'en-tête, exactement comme quand une requête ne trouve rien.

Francois

ViPHP
xTG
ViPHP | 7331 Messages

09 août 2012, 14:31

Essaies sans le --tables, la commande est prévue pour accepter le nom des tables quand elles suivent le nom de la base de données.

Eléphant du PHP | 81 Messages

10 août 2012, 11:25

J'ai essayé sans --tables mais j'ai tjs le même contenu dans le fichier tables.sql:

Code : Tout sélectionner

-- MySQL dump 10.13 Distrib 5.1.61, for debian-linux-gnu (i486) -- -- Host: xxxxxxxxxxxx Database: xxxxxxxxxxxxxxxxx -- ------------------------------------------------------ -- Server version 5.1.49-3-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 utf8 */; /*!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 */;
enregistré sur le site dans le répertoire où se trouve mon code Php.

Les deux tables apparaissent bien dans le SHOW TABLES qui suit.

Merci de ton aide mais le mystère reste entier.

Francois

ViPHP
xTG
ViPHP | 7331 Messages

10 août 2012, 13:04

Et tu dis que quand tu te connectes avec cet utilisateur les tables sont bien visibles ?
Ce sont des tables et non des vues ?
Je dois bien avouer que là je vois plus trop quoi te conseiller...

Eléphant du PHP | 81 Messages

10 août 2012, 14:00

Oui, les deux tables apparaissent bien, avec d'autres, dans le SHOW TABLES, et ce sont bien des tables.

Je me demande si je n'ai pas une erreur très bête, grosse comme une maison, mais je n'ai encore rien trouvé.

Merci de ton aide, je continue à chercher.

Francois