IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

mysqldump Export base de données


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Août 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Août 2010
    Messages : 2
    Par défaut mysqldump Export base de données
    Bonjour,

    J'essaie en vain depuis plusieurs jours d'exporter une base données Mysql afin de faire une sauvegarde automatique en php. Je suis chez un hébergeur qui fait tourner ses serveurs sous Linux. Voici le script php que j'utilise :

    $system="mysqldump --host=mysql5.0 --user=******** --password=******** --databases ******* > dump.sql";

    system($system);

    Je ne comprends pas... ça devrait marcher ! J'ai regardé sur beaucoup de forums et il ne devrait pas y avoir de problème ! Voici le résultat du fichier dump.sql :

    -- MySQL dump 10.11
    -- Host: mysql5.0 Database: ********
    -- ------------------------------------------------------
    -- Server version 5.0.51a-24+lenny3

    /*!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 */;

    --
    -- Current Database: '********'
    --

    CREATE DATABASE /*!32312 IF NOT EXISTS*/ '********' /*!40100 DEFAULT CHARACTER SET latin1 */;

    USE '********';

    Et rien après... J'ai contacté le support technique de mon hébergeur, qui m'a aussitôt répondu que c'est parce que ma base de données était vide, ce qui n'est en réalité absolument pas le cas...

    Quelqu'un aurait-il une idée, une petite solution ??

    Merci beaucoup par avance,

    Paul

  2. #2
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Bonjour,

    voici ma classe pour faire ce genre de manip :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    class dumpMySQL{
     
     
    function dumpMySQL($serveur, $login, $password, $base, $mode)
    {
        $connexion = mysql_connect($serveur, $login, $password);
        mysql_select_db($base, $connexion);
     
        $entete = "-- dump de la base ".$base." au ".date("d-M-Y")."\n";
        $entete .= "-- ----------------------\n\n\n";
        $creations = "";
        $insertions = "\n\n";
     
        $listeTables = mysql_query("show tables", $connexion);
        while($table = mysql_fetch_array($listeTables))
        {
            // si l'utilisateur a demandé la structure ou la totale
            if($mode == 1 || $mode == 3)
            {
                $creations .= "-- -----------------------------\n";
                $creations .= "-- creation de la table ".$table[0]."\n";
                $creations .= "-- -----------------------------\n";
                $listeCreationsTables = mysql_query("show create table ".$table[0], $connexion);
                while($creationTable = mysql_fetch_array($listeCreationsTables))
                {
                  $creations .= $creationTable[1].";\n\n";
                }
            }
            // si l'utilisateur a demandé les données ou la totale
            if($mode > 1)
            {
                $donnees = mysql_query("SELECT * FROM ".$table[0]);
                $insertions .= "-- -----------------------------\n";
                $insertions .= "-- insertions dans la table ".$table[0]."\n";
                $insertions .= "-- -----------------------------\n";
                while($nuplet = mysql_fetch_array($donnees))
                {
                    $insertions .= "INSERT INTO ".$table[0]." VALUES(";
                    for($i=0; $i < mysql_num_fields($donnees); $i++)
                    {
                      if($i != 0)
                         $insertions .=  ", ";
                      if(mysql_field_type($donnees, $i) == "string" || mysql_field_type($donnees, $i) == "blob")
                         $insertions .=  "'";
                      $insertions .= addslashes($nuplet[$i]);
                      if(mysql_field_type($donnees, $i) == "string" || mysql_field_type($donnees, $i) == "blob")
                        $insertions .=  "'";
                    }
                    $insertions .=  ");\n";
                }
                $insertions .= "\n";
            }
        }
     
        mysql_close($connexion);
     
        $fichierDump = fopen('F:\backup-'.date('d-m-Y_Hi').'.sql', "wb");
        fwrite($fichierDump, $entete);
        fwrite($fichierDump, $creations);
        fwrite($fichierDump, $insertions);
        fclose($fichierDump);
        echo "Sauvegarde réalisée avec succès !!";
    }
     
    }

    à utiliser avec $mode=3 pour toutes les infos.

    PS: changer la variable $fichierDump en fonction de ton cas de figure aussi

  3. #3
    Nouveau candidat au Club
    Inscrit en
    Août 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Août 2010
    Messages : 2
    Par défaut Solution du problème
    Merci premièrement de ta réponse.

    Je disposais d'une fonction comme ça moi également, mais bon, allez savoir pourquoi, je voulais absolument faire fonctionner ce mysqldump ... pour se perfectionner, sans doute

    Alors voilà, je me suis obstiné et j'ai cherché un peu partout, et bien évidemment sur le chat de ce merveilleux site

    Après moult péripéties, voilà pourquoi ça ne fonctionnait pas et surtout, pourquoi le SQL s'arrêtait là alors qu'il avait si bien commencé à exécuter le dump... : les tables étaient bloquées !! Il m'a fallu faire un batch pour connaitre l'erreur, car du côté php, pas moyen de savoir !!

    La solution est donc de rajouter un argument dans la ligne de commande : --lock-tables=false !!! Au final, voici la syntaxe qui a fini par me faire sourire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $host="serveur";
    $id="identifiant";
    $pass="mot_de_passe";
    $bd="ma_base_de_données";
    $sortie="dump_".$bd."_".date(j.m.Y).".sql";
     
    $system="mysqldump --lock-tables=false -h ".$host." -u ".$id." -p".$pass." -B ".$bd." > ".$sortie;
    system($system);

Discussions similaires

  1. [phpMyAdmin] Export base de donnée en ligne de commande MySQLDump
    Par Mouic dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 02/03/2010, 13h04
  2. Exporter base de donnée
    Par Matmal11 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 21/03/2007, 12h25
  3. exportation base de données
    Par yasinfo dans le forum Oracle
    Réponses: 3
    Dernier message: 29/01/2007, 09h21
  4. exporter Base de donnée sur pc client
    Par flatron dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 13/09/2006, 23h36
  5. Exporter base de données MySQL
    Par cedre22 dans le forum Administration
    Réponses: 2
    Dernier message: 15/12/2005, 17h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo