Sauvegarde et restauration de bases mysql

Résolu
Dikmas Messages postés 376 Date d'inscription   Statut Membre Dernière intervention   -  
Dikmas Messages postés 376 Date d'inscription   Statut Membre Dernière intervention   -
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.
A voir également:

21 réponses

Stef60 Messages postés 251 Date d'inscription   Statut Membre Dernière intervention   41
 
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   Statut Membre Dernière intervention   41
 
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   Statut Membre Dernière intervention   63
 
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   Statut Membre Dernière intervention   41
 
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   Statut Membre Dernière intervention   63
 
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   Statut Membre Dernière intervention   41
 
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   Statut Membre Dernière intervention   63
 
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   Statut Membre Dernière intervention   63
 
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   Statut Membre Dernière intervention   41
 
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   Statut Membre Dernière intervention   63
 
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   Statut Membre Dernière intervention   41
 
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   Statut Membre Dernière intervention   63
 
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   Statut Membre Dernière intervention   41
 
a quoi correspond %ECHEC% ?
pas à la sauvegarde a réussie j'espere ? ;-)
1
Dikmas Messages postés 376 Date d'inscription   Statut Membre Dernière intervention   63
 
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   Statut Membre Dernière intervention   41
 
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   Statut Membre Dernière intervention   63
 
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   Statut Membre Dernière intervention   63
 
oups. petite erreur :/
1
Stef60 Messages postés 251 Date d'inscription   Statut Membre Dernière intervention   41
 
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   Statut Membre Dernière intervention   63
 
ç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   Statut Membre Dernière intervention   63
 
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   Statut Membre Dernière intervention   63
 
Je met -B sinon, j'ai toujours la même erreur mais la sauvegarde ne se fait pas.
-1