mysqldump ส่งคืนสถานะหรือไม่


14

ฉันกำลังสร้างสคริปต์ที่สำรองฐานข้อมูล mysql โดยใช้โปรแกรมอรรถประโยชน์ mysqldump ฉันกำลังเขียนสคริปต์นี้ในเปลือก "sh" ฉันต้องการบันทึกสถานะเอาต์พุตของ mysqldump ในสคริปต์ (เช่นถ้าคำสั่ง mysqldump ล้มเหลวหรือสำเร็จ) ดังนั้นฉันสามารถรายงานว่าสคริปต์ประสบความสำเร็จหรือไม่

  • mysqldump ส่งคืนสถานะเอาต์พุตหรือไม่

  • ใครช่วยกรุณาให้คำแนะนำในการทำเช่นนี้กับฉันได้ไหม


คุณสามารถตรวจสอบว่าไฟล์ถูกสร้างขึ้นและบรรทัดสุดท้ายมีบางอย่างเช่น-- Dump completed on ...- หากมีปัญหาก็จะไม่เกิดกรณีนี้
Ewan Heming

ฉันกำลังสร้างการถ่ายโอนข้อมูลผ่านเชลล์สคริปต์ดังนั้นฉันต้องการได้รับการสร้างความคิดอย่างถูกต้องหรือไม่ผ่านสถานะบางอย่าง
krunal shah

คำตอบ:


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

ฉันไม่สามารถส่งคืนข้อความแสดงข้อผิดพลาด Success of Failure กลับสู่อีเมลของฉันได้หรือไม่ กรุณาช่วยคุณ ...
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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.