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 -
Dikmas Messages postés 376 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Sauvegarde et restauration de bases mysql
- Restauration systeme windows 10 - Guide
- Logiciel de sauvegarde gratuit - Guide
- Restauration usine pc - Guide
- Restaurer sauvegarde google sur android - Guide
- Sauvegarde facile - Télécharger - Sauvegarde
21 réponses
Bonjour,
Pourquoi utilises-tu -B ici :
D:\mysql\bin\mysqldump -u root -proot -B menagerie > %FICHIER%;
Pourquoi utilises-tu -B ici :
D:\mysql\bin\mysqldump -u root -proot -B menagerie > %FICHIER%;
D:\mysql\bin\mysqldump -u root -p"root" menagerie > %FICHIER%;
Si cela ne fonctionne pas, es-tu certain que ta base s'appelle menagerie ?
Si cela ne fonctionne pas, es-tu certain que ta base s'appelle menagerie ?
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.
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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.
D:\mysql\bin\mysqldump -u root -p"root" menagerie > %FICHIER%;
il faut l'enlever.
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.
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.
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
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
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
@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
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.
@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.
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
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
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
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
lol non quand même
voici mes deux variables
SET REUSSI=Sauvegarde reussi
SET ECHEC=Sauvegarde echouee
voici mes deux variables
SET REUSSI=Sauvegarde reussi
SET ECHEC=Sauvegarde echouee
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 ?
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 ?
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
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
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
@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
ç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 ^^