Sauvegarde et restauration de bases mysql

Résolu/Fermé
Dikmas
Messages postés
376
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
3 mai 2012
- 17 oct. 2008 à 10:49
Dikmas
Messages postés
376
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
3 mai 2012
- 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.

21 réponses

Stef60
Messages postés
251
Date d'inscription
jeudi 31 mai 2007
Statut
Membre
Dernière intervention
22 avril 2009
41
17 oct. 2008 à 11:03
Bonjour,
Pourquoi utilises-tu -B ici :
D:\mysql\bin\mysqldump -u root -proot -B menagerie > %FICHIER%;
1
Stef60
Messages postés
251
Date d'inscription
jeudi 31 mai 2007
Statut
Membre
Dernière intervention
22 avril 2009
41
17 oct. 2008 à 11:29
D:\mysql\bin\mysqldump -u root -p"root" menagerie > %FICHIER%;

Si cela ne fonctionne pas, es-tu certain que ta base s'appelle menagerie ?
1
Dikmas
Messages postés
376
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
3 mai 2012
63
17 oct. 2008 à 11:32
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.
1
Stef60
Messages postés
251
Date d'inscription
jeudi 31 mai 2007
Statut
Membre
Dernière intervention
22 avril 2009
41
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..
0
Dikmas
Messages postés
376
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
3 mai 2012
63
17 oct. 2008 à 12:28
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.
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Stef60
Messages postés
251
Date d'inscription
jeudi 31 mai 2007
Statut
Membre
Dernière intervention
22 avril 2009
41
17 oct. 2008 à 12:53
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.
1
Dikmas
Messages postés
376
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
3 mai 2012
63
17 oct. 2008 à 13:01
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.
1
Dikmas
Messages postés
376
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
3 mai 2012
63
17 oct. 2008 à 13:44
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
1
Stef60
Messages postés
251
Date d'inscription
jeudi 31 mai 2007
Statut
Membre
Dernière intervention
22 avril 2009
41
17 oct. 2008 à 14:00
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
1
Dikmas
Messages postés
376
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
3 mai 2012
63
17 oct. 2008 à 14:17
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.
1
Stef60
Messages postés
251
Date d'inscription
jeudi 31 mai 2007
Statut
Membre
Dernière intervention
22 avril 2009
41
17 oct. 2008 à 14:35
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
1
Dikmas
Messages postés
376
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
3 mai 2012
63
17 oct. 2008 à 14:49
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
1
Stef60
Messages postés
251
Date d'inscription
jeudi 31 mai 2007
Statut
Membre
Dernière intervention
22 avril 2009
41
17 oct. 2008 à 15:02
a quoi correspond %ECHEC% ?
pas à la sauvegarde a réussie j'espere ? ;-)
1
Dikmas
Messages postés
376
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
3 mai 2012
63
17 oct. 2008 à 15:04
lol non quand même

voici mes deux variables

SET REUSSI=Sauvegarde reussi
SET ECHEC=Sauvegarde echouee
1
Stef60
Messages postés
251
Date d'inscription
jeudi 31 mai 2007
Statut
Membre
Dernière intervention
22 avril 2009
41
17 oct. 2008 à 15:31
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 ?
1
Dikmas
Messages postés
376
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
3 mai 2012
63
17 oct. 2008 à 15:32
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
1
Dikmas
Messages postés
376
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
3 mai 2012
63
17 oct. 2008 à 15:34
oups. petite erreur :/
1
Stef60
Messages postés
251
Date d'inscription
jeudi 31 mai 2007
Statut
Membre
Dernière intervention
22 avril 2009
41
17 oct. 2008 à 15:48
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
1
Dikmas
Messages postés
376
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
3 mai 2012
63
17 oct. 2008 à 16:09
ç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 ^^
0
Dikmas
Messages postés
376
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
3 mai 2012
63
17 oct. 2008 à 16:22
Merci de me le dire, c'est la première fois que je post sur ce forum, je ne savais pas.

Merci ^^
0
Dikmas
Messages postés
376
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
3 mai 2012
63
17 oct. 2008 à 11:16
Je met -B sinon, j'ai toujours la même erreur mais la sauvegarde ne se fait pas.
-1