Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/03/2011, 08h25   #1
Invité régulier
 
Inscription : avril 2008
Messages : 32
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : avril 2008
Messages : 32
Points : 7
Points : 7
Par défaut PHP mysqldump donne un fichier vide!

Bonjour,

Voilà je vous donne l'une des solutions que j'ai essayé mais toujours le même problème, je recoi un fichier vide!

Code :
1
2
3
4
5
6
7
<?php
$time=time();
 
$command = "C:\Program Files\EasyPHP5.2.10\mysql\bin\mysqldump.exe mysqldump -u root -h localhost dreams > $time-dreams.sql";
system($command);
 
?>
Qui peut m'aider s'il vous plait?!

Merci à tous!
Oussama_Gabes est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 08h40   #2
Membre du Club
 
Avatar de moins52
 
Inscription : août 2003
Messages : 61
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 61
Points : 51
Points : 51
Et en exécutant la commande directement, c'est-à-dire hors PHP, tu obtiens quoi ?
moins52 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 09h37   #3
Invité régulier
 
Inscription : avril 2008
Messages : 32
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : avril 2008
Messages : 32
Points : 7
Points : 7
Citation:
Envoyé par moins52 Voir le message
Et en exécutant la commande directement, c'est-à-dire hors PHP, tu obtiens quoi ?
Merci pour la réponse

Voilà, lorsque je fais comme suit, ça marche:
Code :
1
2
3
4
5
6
 
// Etape 1:
cd c:/program files/easyphp5.2.10/mysql/bin
 
//Etape 2:
mysqldump -u root -p  dreams > "c:/backup.sql"
Mais lorsque je fais directement:

Code :
cd c:/program files/easyphp5.2.10/mysql/bin/mysqldump -u root -p  dreams > "c:/backup.sql"
ça donne l'erreur: Le chemin d’accès spécifié est introuvable.
Oussama_Gabes est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 11h18   #4
Membre chevronné
 
Homme
Développeur Web
Inscription : mars 2011
Messages : 399
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : Finance

Informations forums :
Inscription : mars 2011
Messages : 399
Points : 662
Points : 662
As-tu essayé :

Code :
1
2
3
4
5
6
7
<?php
$time=time();
 
$command = "C:/Program Files/EasyPHP5.2.10/mysql/bin/mysqldump.exe mysqldump -u root -h localhost dreams > $time-dreams.sql";
system($command);
 
?>
ou

Code :
1
2
3
4
5
6
7
<?php
$time=time();
 
$command = "C:\\Program Files\\EasyPHP5.2.10\\mysql\\bin\\mysqldump.exe mysqldump -u root -h localhost dreams > $time-dreams.sql";
system($command);
 
?>
car "\" est un caractère d'échappement.

Citation:
Envoyé par Oussama_Gabes Voir le message
Code :
cd c:/program files/easyphp5.2.10/mysql/bin/mysqldump -u root -p  dreams > "c:/backup.sql"
ça donne l'erreur: Le chemin d’accès spécifié est introuvable.
Normal, ta commande commence par "cd" (commande pour changer de dossier) et tu le mènes vers c:/program files/easyphp5.2.10/mysql/bin/mysqldump (mysqldump n'étant pas un dossier, il ne le trouve pas en tant que tel). Puis, il ne prendrait pas les autres paramètres en compte.

Essaye
Code :
c:/program files/easyphp5.2.10/mysql/bin/mysqldump -u root -p  dreams > "c:/backup.sql"
__________________
Membre de StackOverflow, je suis un fervant utilisateur de PHP et de jQuery.
Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web mais aussi plusieurs projets personnels.
Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, un raccourcisseur d'url, un bookmarklet pour envoyer l'url de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc...
Shikiryu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/03/2011, 15h06   #5
Invité régulier
 
Inscription : avril 2008
Messages : 32
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : avril 2008
Messages : 32
Points : 7
Points : 7
Citation:
Envoyé par Shikiryu Voir le message

Normal, ta commande commence par "cd" (commande pour changer de dossier) et tu le mènes vers c:/program files/easyphp5.2.10/mysql/bin/mysqldump (mysqldump n'étant pas un dossier, il ne le trouve pas en tant que tel). Puis, il ne prendrait pas les autres paramètres en compte.

Essaye
Code :
c:/program files/easyphp5.2.10/mysql/bin/mysqldump -u root -p  dreams > "c:/backup.sql"
Merci pour votre réponse.

Ah oui, c'est logique la commande cd est pour changer le dossier donc le programme ne trouve pas le chemin

Pour la ligne de commande:
Code :
c:/program files/easyphp5.2.10/mysql/bin/mysqldump -u root -p  dreams > "c:/backup.sql"
Elle ne fonctionne pas non plus.

Bon, je retourne au code php... négatif, le résultat est toujours le même
Oussama_Gabes est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 10h15   #6
Membre du Club
 
Avatar de moins52
 
Inscription : août 2003
Messages : 61
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 61
Points : 51
Points : 51
Je viens de m'appercevoir que tu as un mysqldump.exe de trop.

Essaye plutôt :
Code :
1
2
3
4
5
6
7
<?php
$time=time();
 
$command = "C:\\Program Files\\EasyPHP5.2.10\\mysql\\bin\\mysqldump -u root -h localhost dreams > $time-dreams.sql";
system($command);
 
?>
moins52 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2011, 08h48   #7
Invité régulier
 
Inscription : avril 2008
Messages : 32
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : avril 2008
Messages : 32
Points : 7
Points : 7
Citation:
Envoyé par moins52 Voir le message
Je viens de m'appercevoir que tu as un mysqldump.exe de trop.

Essaye plutôt :
Code :
1
2
3
4
5
6
7
<?php
$time=time();
 
$command = "C:\\Program Files\\EasyPHP5.2.10\\mysql\\bin\\mysqldump -u root -h localhost dreams > $time-dreams.sql";
system($command);
 
?>
Merci encore une fois. Mais le fichier est toujours vide :'(

Je ne comprend pas vraiment ou est l'erreur, j'ai essayé plein de possibilités mais le résultat est le même
Oussama_Gabes est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 14h45   #8
Invité régulier
 
Inscription : avril 2008
Messages : 32
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : avril 2008
Messages : 32
Points : 7
Points : 7
personne ne connaît la méthode d'appel de mysqldump dans php?!
Oussama_Gabes est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 15h41   #9
Membre chevronné
 
Homme
Développeur Web
Inscription : mars 2011
Messages : 399
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : Finance

Informations forums :
Inscription : mars 2011
Messages : 399
Points : 662
Points : 662
Je ne sais pas (et je ne pense pas) que mysqldump soit directement implémenté dans PHP (ou même possiblement lançable depuis PHP sans le faire comme tu souhaites le faire).

Néanmoins, pour un de mes vieux site, j'avais récupéré un code qui fonctionnait bien pour sauvegarder ma base. (je ne le ferai pas de la même manière maintenant si je devais le refaire)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
function backupDatabase($file){
   mysql_connect('host', 'login', 'pass'); // hôte / login / pass
   mysql_select_db('db_name');  // nom de la base
   $tables = array();
   $result = mysql_query('SHOW TABLES');
     while($row = mysql_fetch_row($result)){ $tables[] = $row[0]; } 
     //cycle through
     $return = "";
     foreach($tables as $table){
     $result = mysql_query('SELECT * FROM '.$table);
     $num_fields = mysql_num_fields($result); 
     $return.= 'DROP TABLE IF EXISTS '.$table.';';
     $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
     $return.= "\n\n".$row2[1].";\n\n"; 
     for ($i = 0; $i < $num_fields; $i++){
       while($row = mysql_fetch_row($result)){
       $return.= 'INSERT INTO '.$table.' VALUES(';
         for($j=0; $j<$num_fields; $j++){
         $row[$j] = addslashes($row[$j]);
         $row[$j] = ereg_replace("\n","\\n",$row[$j]);
         if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
           if ($j<($num_fields-1)) { $return.= ','; }
         }
       $return.= ");\n";
       }
     }
     $return.="\n\n\n";
     }
   //save file
   $handle = fopen($file,'w+');
   fwrite($handle,$return);
   fclose($handle);
   echo "Backup Finie";
}
backupDatabase('chemin/vers/backup' . date('m-d-y') . '.sql');
?>
__________________
Membre de StackOverflow, je suis un fervant utilisateur de PHP et de jQuery.
Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web mais aussi plusieurs projets personnels.
Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, un raccourcisseur d'url, un bookmarklet pour envoyer l'url de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc...
Shikiryu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/04/2011, 13h49   #10
Invité régulier
 
Inscription : avril 2008
Messages : 32
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : avril 2008
Messages : 32
Points : 7
Points : 7
Citation:
Envoyé par Shikiryu Voir le message
Je ne sais pas (et je ne pense pas) que mysqldump soit directement implémenté dans PHP (ou même possiblement lançable depuis PHP sans le faire comme tu souhaites le faire).

Néanmoins, pour un de mes vieux site, j'avais récupéré un code qui fonctionnait bien pour sauvegarder ma base. (je ne le ferai pas de la même manière maintenant si je devais le refaire)
Merci bien pour votre réponse

Pour la commande mysqldump on peut l'implémenter dans php, j'ai trouver des sujets sur les forum à propos de ça. Mais, je ne sais pas pourquoi ca marche pas avec ma base (J'utilise easyPHP en local).

La mysqldump est bien utile lorsque la taille de la base est très grand, elle sauvegarde les données instantanément.

Imagine qu'on a des tableau de milliers de ligne, le programme va faire le parcourt des toutes ces ligne pour copier les données avec un grand risque de planter ou de ne pas prendre en compte les données inseré durant le temps de ce parcourt.

Merci encore une fois pour le code
Oussama_Gabes est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h30.


 
 
 
 
Partenaires

Hébergement Web