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.