Чи повертає mysqldump статус?


14

Я створюю скрипт, який створює резервну копію mysql db за допомогою утиліти mysqldump. Я пишу цей сценарій у оболонці "ш". Я хотів би зафіксувати вихідний стан mysqldump у скрипті (тобто, якщо команда mysqldump не вдалася чи вдалася), щоб я міг повідомити, чи був сценарій успішним чи ні.

  • Чи повертає mysqldump вихідний статус?

  • Може хтось, будь ласка, дасть мені вказівки, як це зробити?


Ви можете просто перевірити, що файл створений і останній рядок містить щось на кшталт -- Dump completed on ...- Якщо виникла проблема, то це не буде так.
Еван Хемінг

Я створюю дамп через скрипт оболонки, тому я хочу, щоб ідея скиду була створена належним чином чи не через якийсь статус.
крунал шах

Відповіді:


14

mysqldump повертається

0 for Success
1 for Warning
2 for Not Found

Він також друкує розширене повідомлення про помилку на stderr, наприклад

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

Ви можете перевірити повернене значення так

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

я не в змозі повернути повідомлення про помилку успіху відмови на електронну пошту? Будь ласка, допоможіть, сер ...
sqlchild

Цікавий випуск у 2020 році, або MySQL 5, або 8 видає якийсь вихідний код. bugs.mysql.com/bug.php?id=90538
joseluisq

1

Після закінчення дампа чек $? оболонка змінна. Якщо це 0 - все пішло нормально. Інше - помилка.

# 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.