Czy mysqldump zwraca status?


14

Tworzę skrypt, który tworzy kopię zapasową bazy danych mysql przy użyciu narzędzia mysqldump. Piszę ten skrypt w powłoce „sh”. Chciałbym uchwycić status skryptu mysqldump w skrypcie (tj. Jeśli polecenie mysqldump nie powiodło się lub zakończyło się powodzeniem), dzięki czemu mogę zgłosić, czy skrypt się powiódł, czy nie.

  • Czy mysqldump zwraca status wyjściowy?

  • Czy ktoś może podać mi instrukcje, jak to zrobić?


Możesz po prostu sprawdzić, czy plik został utworzony, a ostatni wiersz zawiera coś w rodzaju -- Dump completed on ...- Jeśli wystąpił problem, nie będzie tak.
Ewan Heming

Tworzę zrzut za pomocą skryptu powłoki, więc chcę uzyskać pomysł, aby zrzut został poprawnie utworzony lub nie przez jakiś status.
krunal shah

Odpowiedzi:


14

mysqldump zwraca

0 for Success
1 for Warning
2 for Not Found

Drukuje również rozszerzony komunikat o błędzie na stderr np

mysqldump: Got error: 1049: Unknown database 'dbname' when selecting the database

Możesz w ten sposób sprawdzić zwróconą wartość

mysqldump -u DBuser -pDBpassword database >database.sql 2>database.err 
if [ "$?" -eq 0 ]
then
    echo "Success"
else
    echo "Mysqldump encountered a problem look in database.err for information"
fi

nie mogę zwrócić komunikatu o błędzie „Powodzenie awarii” na mój e-mail? Proszę, proszę pana ...
sqlchild

Ciekawy problem w 2020 r., MySQL 5 lub 8 emituje jakiś kod wyjścia. bugs.mysql.com/bug.php?id=90538
joseluisq

1

Po zakończeniu zrzutu sprawdź $? zmienna powłoki. Jeśli jest 0 - wszystko poszło dobrze. W przeciwnym razie błąd.

# mysqldump -u aaa -d msf>/dev/null
mysqldump: Got error: 1045: Access denied for user 'aaa'@'localhost' (using password: YES) when trying to connect
# echo $?
2
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.