Précédent   Forum du club des développeurs et IT Pro > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 14/12/2012, 17h39   #1
tim1789
Futur Membre du Club
 
Inscription : mai 2007
Messages : 78
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 78
Points : 17
Points : 17
Par défaut Sauvegarde de bd avec php

Bonjour,
Pour un site, je dois proposer une sauvegarde de la bd dans la partie admin du site, car il est difficile d'envoyer les utilisateurs sur phpmyadmin. En cherchant sur internet,je suis arrivé à ce script php :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
$host = 'lhost';
$username = 'utilisateur';
$psw = 'mot_de_passe';
$db = 'nom_database';
$username =escapeshellcmd($username);
$psw =escapeshellcmd($psw);
$host =escapeshellcmd($host);
$db =escapeshellcmd($db);
echo 'sauvegarde db '.$db.'<br>';
$fichier="chemin_repertoire/dump_".$db."_".date("d-m-Y-H-i-s").".sql";
$command = "mysqldump -u$username -p$psw -h$host $db > $fichier";
system($command, $result);
echo $result;
J'obtiens bien un fichier de sauvegarde qui comprend pour chaque table drop, create puis insert into comme lorsque je fais une sauvegarde par phpmyadmin, mais insert into ne comporte pas les entêtes de colonnes
INSERT INTO `articles` VALUES (7,3,'','',''
au lieu de
INSERT INTO `articles` (`id_article`, `id_rubrique`, `surtitre`...) VALUES(7,3,'','',''
et seulement un nombre limité de valeurs à insérer (1 enregistrement et une partie du second).
Grave pour faire une restauration.
Où est l'erreur ?
Merci
tim1789 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2012, 18h29   #2
ericd69
Expert Confirmé
 
Avatar de ericd69
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 1 802
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 1 802
Points : 3 096
Points : 3 096
salut,

ça se paramètre dans le formulaire de phpmyadmin qui crée le fichier de sauvegarde de la bd...y a plus ou moins d'options selon la version...

mais les entête c'est pas grave, c'est qu'il remplit les colonnes dans l'ordre d'apparition avec les valeurs de manière implicite...
__________________
soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2012, 08h18   #3
tim1789
Futur Membre du Club
 
Inscription : mai 2007
Messages : 78
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 78
Points : 17
Points : 17
Bonjour,
Merci de ta réponse, mais le script php a justement pour but d'éviter de passer par phpmysql qui fonctionne tout à fait normalement. phpmysql est totalement étranger à ce script et son paramétrage ne peut pas avoir d'incidence.
tim1789 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2012, 08h50   #4
ericd69
Expert Confirmé
 
Avatar de ericd69
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 1 802
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 1 802
Points : 3 096
Points : 3 096
si tu es sur un dédié tu devrais mettre en place un système de réplication qui existe de base dans mysql...


sinon comme je te le disais préciser les colonnes où tu insères ne sert à rien dans un dump (à part pour la relecture par un humain) ou si tu as à n'insérer que certaines valeurs ou si c'est fait en ne respectant pas l'ordre par défaut des colonnes...

sinon il insert juste les valeurs dans l'ordre des colonnes par défaut donc mysql ne le précise pas... en plus ça fait gagner de la place à chaque apparition d'insert...

faut lire la doc, tu devrais rajouter:
  • -c ou --complete-insert si tu veux voir apparaitre les colonnes (même si comme je te l'ai dit en pratique c'est inutile)
  • -e ou --extended-insert pour engendrer des inserts multiples par commande, ce qui va accélérer l'insertion

qu'est ce que tu appelles incomplet montre un exemple des lignes originale et de leur équivalent dans la sauvegarde?

s'il y a une erreur il s'arrête ça peut être du à ça... regarde les log pour voir si ça te parle d'un problème
__________________
soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2012, 10h11   #5
tim1789
Futur Membre du Club
 
Inscription : mai 2007
Messages : 78
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 78
Points : 17
Points : 17
Je crois bien que j'ai posé cette question à tord. Ce matin, je retrouve mon fichier de sauvegarde complet. Etait-ce la fatigue d'hier soir ? Je suis pourtant certain de n'avoir pas rêvé ! Etait-ce un temps de réaction du serveur ? Mais ce temps me semble bien long ! Et en y ajoutant le paramètre -c ou -e, je retrouve bien les entêtes de colonnes.
Je m'excuse donc de cette question qui n'en était pas une.

Le système de réplication dont tu parles est intéressant car je suis Je suis sur un serveur dédié. J'y ai accès par cpanel et par VHM. Mais là, je n'ose pas toucher car je n'y connais rien.

Merci
tim1789 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2012, 10h33   #6
ericd69
Expert Confirmé
 
Avatar de ericd69
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 1 802
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 1 802
Points : 3 096
Points : 3 096
ça revient à avoir 2 serveur mysql, un maitre et un esclave et du coup c'est surtout utile si tu as 2 dédiés car si le dédié crash ta sauvegarde dessus serait perdue...

de la même manière que là tu dois transférer régulièrement tes sauvegardes ailleurs sinon tu ne seras pas plus avancé...

oublie pas si c'est bon pour toi
__________________
soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2012, 11h12   #7
tim1789
Futur Membre du Club
 
Inscription : mai 2007
Messages : 78
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 78
Points : 17
Points : 17
Oui, c'est bon pour moi et je te remercie.
A plus, surement !
tim1789 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 15h24.


 
 
 
 
Partenaires

Hébergement Web