Création
d'entreprise
Posez votre question Signaler

Sauvegarde et restauration de bases mysql [Résolu]

Dikmas 389Messages postés 17 octobre 2008Date d'inscription 3 mai 2012Dernière intervention - Dernière réponse le 17 oct. 2008 à 16:22
Bonjour,
J'ai créé une base test mysql que j'ai nommée "menagerie". Dedans, j'ai créé la table "animal".
j'ai créé un script en bat afin de faire la sauvegarde de toute la base menagerie.
SET JOUR=%date:~-10,2%
SET ANNEE=%date:~-4%
SET MOIS=%date:~-7,2%
SET HEURE=%time:~0,2%
SET MINUTE=%time:~3,2%
SET SECOND=%time:~-5,2%
IF "%time:~0,1%"==" " SET HEURE=0%HEURE:~1,1%
SET REPERTOIR=D:\backupmysql\menagerie\
SET FICHIER=%REPERTOIR%\Sauvegarde_de_menagerie_du_%JOUR%_%MOIS%_%ANNEE%_A_%HEURE%_%MINUTE%.sql
SET FICHIER1=%REPERTOIR1%\Sauvegarde_de_mysql_du_%JOUR%_%MOIS%_%ANNEE%_A_%HEURE%_%MINUTE%.sql
IF NOT exist "%REPERTOIR%" md "%REPERTOIR%"
D:\mysql\bin\mysqldump -u root -proot -B menagerie > %FICHIER%;

lors de l'exécution de ce script cette erreur apparait :
mysqldump: Got error: 1049: Unknow database ';' when selecting the database
Pourtant, lorsque je vais voir le fichier de sauvegarde il est bien créé et correctement remplit avec les bonnes données.
Voila pour la sauvegarde.
Ensuite vient la restauration. Au préalable je supprime la table "animal" pour mieux voir si la restauration a réussit ou pas
j'utilise donc cette commande dans un fichier bat :
mysql -u root -proot -D menagerie < D:\backupmysql\menagerie\Sauvegarde_de_menagerie_du_17_10_2008_A_10_29.sql;
Il met met l'erreur suivante :
ERROR 1049 (42000): Unknow database ';'
Et cette fois ci la restauration n'est pas effectué. Et je ne comprend pas pourquoi.
Merci d'avance pour votre aide et désolé pour ce long post.
Lire la suite 

Sauvegarde et restauration de bases mysql »

22 réponses
Réponse
+1
moins plus
Bonjour,
Pourquoi utilises-tu -B ici :
D:\mysql\bin\mysqldump -u root -proot -B menagerie > %FICHIER%;
Ajouter un commentaire
Réponse
+1
moins plus
D:\mysql\bin\mysqldump -u root -p"root" menagerie > %FICHIER%;

Si cela ne fonctionne pas, es-tu certain que ta base s'appelle menagerie ?
Ajouter un commentaire
Réponse
+1
moins plus
Alors, lorsque je met

D:\mysql\bin\mysqldump -u root -p"root" menagerie > %FICHIER%;

donc sans le -B j'ai droit au message :

mysqldump: Couldn't find table ';'

et la sauvegarde ne se fait pas.
Stef60- 17 oct. 2008 à 11:36
Je sais que ma question est conne, mais es-tu sur du nom exact de ta base ?
c'est menagerie, pas ménagerie ou Menagerie..
Ajouter un commentaire
Réponse
+1
moins plus
oui je suis sûr du nom de ma base. j'ai vérifié plusieurs fois et j'ai bien fait attention de ne pas mettre d'accent ni majuscule.
Ajouter un commentaire
Réponse
+1
moins plus
j'avais pas vu le point virgule a la fin de cette commande:
D:\mysql\bin\mysqldump -u root -p"root" menagerie > %FICHIER%;

il faut l'enlever.
Ajouter un commentaire
Réponse
+1
moins plus
super merci.

j'ai aussi enlevé le point virgule dans la commande :

mysql -u root -proot -D menagerie < D:\backupmysql\menagerie\Sauvegarde_de_menagerie_du_17_10_2008_A_10_29.sql

je n'ai plus de message d'erreur mais la restauration ne se fait pas. En effet, la table "animal" n'apparait pas dans la base "menagerie"

edit : en fait c'est bon, ça marche même pour la restauration. Merci bien.
Ajouter un commentaire
Réponse
+1
moins plus
Je reviens sur ce sujet car j'ai une autre question en rapport.

j'aimerais afficher un texte du genre :

"La sauvegarde s'est effectuee correctement" si il n'y a aps eu d'erreur durant l'exécution de la commande
"La sauvegarde a echouee" si il y a eu une erreur lors de l'exécution de la commande.

Afficher le texte, je sais le faire. par contre, je ne sais pas rentrer la condition. Je pense à IF, mais je ne sais pas quoi mettre derrière.

merci d'avance
Ajouter un commentaire
Réponse
+1
moins plus
tu peux essayer un truc comme ca:
@mysql -u root -proot -D menagerie < D:\backupmysql\menagerie\Sauvegarde_de_menagerie_du_17_10_2008_A_10_29.sql

@if %ERRORLEVEL% EQU 0 echo Reussi
@if %ERRORLEVEL% EQU 2 echo Echec
Ajouter un commentaire
Réponse
+1
moins plus
j'ai rajouté :

@if %ERRORLEVEL% EQU 0 echo Reussi
@if %ERRORLEVEL% EQU 2 echo Echec

Dans le BAT de ma sauvegarde. lorsqu'il n'y a pas d'erreur, le message "reussi" apparait.

En revanche, lorsque je créé une erreur ("mysqldump: Couldn't find table ';' " par exemple), le message "echec" n'apparait pas, "reussi" non plus.

EDIT : il ne détecte pas l'erreur. je lui ai demandé d'enregistrer dans un fichier log.txt le résultat de IF avec la commande

SET REUSSI=Sauvegarde reussi
SET ECHEC=Sauvegarde echouee

@if %ERRORLEVEL% EQU 0 echo %REUSSI% le %JOUR%-%MOIS%-%ANNEE% a %HEURE%H%MINUTE% >> D:\backupmysql\log.txt
@if %ERRORLEVEL% EQU 2 echo %ECHEC% le %JOUR%-%MOIS%-%ANNEE% a %HEURE%H%MINUTE% >> D:\backupmysql\log.txt



Il écrit bien lorsque la sauvegarde réussi, mais il écrit rien du tout lorsqu'il me marque une erreur dans l'invite de commande.
Ajouter un commentaire
Réponse
+1
moins plus
C'est normal, il y a plusieurs types d'erreur possibles.
Je ne l'ai connais pas toutes.
si tu veux connaitre l'erreur qu'il te retourne, tu fais echo %ERREURLEVEL% avant les IF

Pour une erreur de table qu'il ne trouve pas, je crois que c'est 6

Donc ca te donne:
@if %ERRORLEVEL% EQU 0 echo Reussi
@if %ERRORLEVEL% EQU 2 echo Echec
@if %ERRORLEVEL% EQU 6 echo Table inconnue

ou tu peux faire ca :

@if %ERRORLEVEL% EQU 0 echo Reussi
@if %ERRORLEVEL% GEQ 1 echo Echec
Ajouter un commentaire
Réponse
+1
moins plus
Je viens de voir un autre problème.

Si je met un mauvais nom d'utilisateur ou un mauvais mot de passe pour me connecter à la base mysql, j'ai une erreur sur l'invite de commande, mais dans mon fichier log il me dit que la sauvegarde a réussie.

J'ai mis cette ligne en cas d'échec de la sauvegarde :

@if %ERRORLEVEL% GEQ 1 echo %ECHEC% le %JOUR%-%MOIS%-%ANNEE% a %HEURE%H%MINUTE% >> D:\backupmysql\log.txt
Ajouter un commentaire
Réponse
+1
moins plus
a quoi correspond %ECHEC% ?
pas à la sauvegarde a réussie j'espere ? ;-)
Ajouter un commentaire
Réponse
+1
moins plus
lol non quand même

voici mes deux variables

SET REUSSI=Sauvegarde reussi
SET ECHEC=Sauvegarde echouee
Ajouter un commentaire
Réponse
+1
moins plus
Tout semble correct.
La commande est bonne.
Je viens de tester la meme chose chez moi et ca marche.

Donc ton erreur est ailleurs.

Tu peux mettre ton script en entier ?
Ajouter un commentaire
Réponse
+1
moins plus
Voila mon script

SET JOUR=%date:~-10,2%
SET ANNEE=%date:~-4%
SET MOIS=%date:~-7,2%
SET HEURE=%time:~0,2%
SET MINUTE=%time:~3,2%
SET SECOND=%time:~-5,2%

IF "%time:~0,1%"==" " SET HEURE=0%HEURE:~1,1%

SET REPERTOIR=D:\backupmysql\menagerie\
SET REPERTOIR1=D:\backupmysql\mysql\

SET FICHIER=%REPERTOIR%\menagerie_du_%JOUR%_%MOIS%_%ANNEE%_A_%HEURE%_%MINUTE%.sql
SET FICHIER1=%REPERTOIR1%\mysql_du_%JOUR%_%MOIS%_%ANNEE%_A_%HEURE%_%MINUTE%.sql

IF NOT exist "%REPERTOIR%" md "%REPERTOIR%"
IF NOT exist "%REPERTOIR1%" md "%REPERTOIR1%"

D:\mysql\bin\mysqldump -u root -proot menagerie > %FICHIER%
D:\mysql\bin\mysqldump -u root -proot mysql > %FICHIER1%

SET REUSSI=Sauvegarde reussi
SET ECHEC=Sauvegarde echouee

@if %ERRORLEVEL% EQU 0 echo %REUSSI% le %JOUR%-%MOIS%-%ANNEE% a %HEURE%H%MINUTE% >> D:\backupmysql\log.txt
@if %ERRORLEVEL% GEQ 1 echo %ECHEC% le %JOUR%-%MOIS%-%ANNEE% a %HEURE%H%MINUTE% >> D:\backupmysql\log.txt


pause
Ajouter un commentaire
Réponse
+1
moins plus
oups. petite erreur :/
Ajouter un commentaire
Réponse
+1
moins plus
moi j'ai testé comme ca et ca fonctionne

@echo off
@set DATE_today=%DATE:~0,2%-%DATE:~3,2%-%DATE:~8,2%
@SET TIME_today=%TIME:~0,2%H%time:~3,2%
@SET REUSSI=Sauvegarde reussi
@SET ECHEC=Sauvegarde echouee

@mysqldump -u root --password="root" menagerie > "dump.sql"
@if %ERRORLEVEL% EQU 0 echo %REUSSI% le %DATE_today% a %TIME_today% > log.txt
@if %ERRORLEVEL% GEQ 1 echo %ECHEC% le %DATE_today% a %TIME_today% > log.txt

pause
Ajouter un commentaire
Réponse
+0
moins plus
ça marche niquel. je vois pas bien où était l'erreur. Mais l'essentiel c'est que ça marche. merci beaucoup pour l'aide. Je vais pas abuser de ta gentillesse plus longtemps et passerait par quelqu'un d'autre pour poser mes questions. Sauf si ça te dérange pas ^^
Ajouter un commentaire
Réponse
+0
moins plus
Merci de me le dire, c'est la première fois que je post sur ce forum, je ne savais pas.

Merci ^^
Ajouter un commentaire
Réponse
-1
moins plus
Je met -B sinon, j'ai toujours la même erreur mais la sauvegarde ne se fait pas.
Ajouter un commentaire
Ce document intitulé « sauvegarde et restauration de bases mysql » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?
sauvegarde et restauration de bases mysql - page 2